Ich bräucht auch grad mal wieder einen Denkansatz.
Ich habe:
Tabelle 'Placemarks':
ID, Lat, Lon
Tabelle 'Areas':
ID, PolygonData
Das heißt... ich habe die Tabellen noch nicht auf einem Server, sondern erst in meinem Kopf. Das Feld PolygonData wäre einfach ein Textfeld, das mit 'Lat,Lon Lat,Lon Lat,Lon ....' gefüllt wäre. Alternativ könnte hierfür auch eine weitere Tabelle stehen, in dem jeder LatLon-Wert eines Polygons in einem eigenem Datensatz hinterlegt wäre - das würde dann auch noch zusätzlich eine Sortierspalte erforderlich machen. Wie die Polygone gespeichert werden hat mit meinem eigentlichen Anliegen aber erstmal nichts zu tun - glaube ich zumindest...
In PHP habe ich mir nun eine Funktion geschrieben, welche feststellt, ob eine mit Lat und Lon definierte Koordinate sich innerhalb eines Polygons (Array) befindet. Diese Funktion habe ich nicht nur in meinem Kopf, sondern die ist bereits "auf Papier" und funktioniert einwandfrei.
Nun ist es aber nicht möglich in SQL direkt abzufragen, ob sich eine Koordinate innerhalb eines Polygons befindet. Wenn ich also wissen will welche Datensätze aus 'Placemarks' sich innerhalb eines bestimmten Polygons aus "Areas" befinden, muss ich alle Datensätze aus 'Placemarks' holen und in PHP dann checken ob sich die Placemark innerhalb oder ausserhalb des Polygons befindet. Wie es euch dabei geht weiß ich jetzt nicht, aber mein Bauchgefühl sagt mir schon, dass das nicht gerade der Königsweg sein kann.
Der sinnvollste Weg, der mir im Augenblick einfällt, sieht so aus, dass ich eine Tabelle 'PlacemarkInArea' anlege:
ID, placemark_ID, area_id, is_in
Diese würde dann per Cronjob in regelmässigen Abständen auf fehlende Kombinationen aus placemark_ID und area_ID geprüft werden und das Prüfungsergebnis aus der PHP-Funktion würde dann dort eingetragen werden.
Wie seht ihr das? Alternativen?
PS:
Der Burner schlechthin wäre, diese Funktion direkt in mySql zu implementieren - aber das ist für mich eine Nummer zu hoch.
Ich habe:
Tabelle 'Placemarks':
ID, Lat, Lon
Tabelle 'Areas':
ID, PolygonData
Das heißt... ich habe die Tabellen noch nicht auf einem Server, sondern erst in meinem Kopf. Das Feld PolygonData wäre einfach ein Textfeld, das mit 'Lat,Lon Lat,Lon Lat,Lon ....' gefüllt wäre. Alternativ könnte hierfür auch eine weitere Tabelle stehen, in dem jeder LatLon-Wert eines Polygons in einem eigenem Datensatz hinterlegt wäre - das würde dann auch noch zusätzlich eine Sortierspalte erforderlich machen. Wie die Polygone gespeichert werden hat mit meinem eigentlichen Anliegen aber erstmal nichts zu tun - glaube ich zumindest...
In PHP habe ich mir nun eine Funktion geschrieben, welche feststellt, ob eine mit Lat und Lon definierte Koordinate sich innerhalb eines Polygons (Array) befindet. Diese Funktion habe ich nicht nur in meinem Kopf, sondern die ist bereits "auf Papier" und funktioniert einwandfrei.
Nun ist es aber nicht möglich in SQL direkt abzufragen, ob sich eine Koordinate innerhalb eines Polygons befindet. Wenn ich also wissen will welche Datensätze aus 'Placemarks' sich innerhalb eines bestimmten Polygons aus "Areas" befinden, muss ich alle Datensätze aus 'Placemarks' holen und in PHP dann checken ob sich die Placemark innerhalb oder ausserhalb des Polygons befindet. Wie es euch dabei geht weiß ich jetzt nicht, aber mein Bauchgefühl sagt mir schon, dass das nicht gerade der Königsweg sein kann.
Der sinnvollste Weg, der mir im Augenblick einfällt, sieht so aus, dass ich eine Tabelle 'PlacemarkInArea' anlege:
ID, placemark_ID, area_id, is_in
Diese würde dann per Cronjob in regelmässigen Abständen auf fehlende Kombinationen aus placemark_ID und area_ID geprüft werden und das Prüfungsergebnis aus der PHP-Funktion würde dann dort eingetragen werden.
Wie seht ihr das? Alternativen?
PS:
Der Burner schlechthin wäre, diese Funktion direkt in mySql zu implementieren - aber das ist für mich eine Nummer zu hoch.
Kommentar