Frage

Ich erstelle eine Anwendung mit Geo Proximity Search Fähigkeit PHP als Server-Skriptsprache und MySQL als Databse verwendet wird.

Nehmen wir eine Situation:

Wenn wir bestimmte Menge von Objekten, die Breiten- und Längenpositionen assosciated mit jeweiligen Objekten. Auf die Angabe des Standorts Details wie Land und / oder die Stadt zusammen mit Bereichs- / Radius in KM bekommen wir Objekte, die withing diesem Radius / Bereich mit MySQL Abfrage beispielsweise liegen:

SELECT [columns] 
FROM [column] 
WHERE 1=1 
AND 3963.191 * 
    ACOS(
    (SIN(PI() * [latitude] / 180) * SIN(PI() * [column].latitude / 180)) + 
    (COS(PI() * [latitude] /180) * cos(PI() * [column].latitude / 180) * COS(PI() * [column].longitude / 180 - PI() * [longitude] / 180)) ) 
    <= 10

Vor Berechnungen werden die Objekte geben, die aus dem Land / Stadt Mittelpunkt auf der Erde innerhalb der 10 KM Gegend sind.

Nehmen wir nun an i ein Objekt haben (mit Breite und Länge), die nicht in dieser 10 KM Bereich, aber zum Beispiel 15 km vom Land / Stadt Mittelpunkt auf der Erde. Dieses Objekt hat Servicebereich 10 KM (Service bis zu 10 KM Bereich geben).

Nun ist die Frage, ob ich für die Objekte innerhalb der 10 km Reichweite von Land / Stadt Mittelpunkt suche dann das Objekt (15 auseinander KM von Land / Stadtzentrum Punkt) mit Servicebereich 10 KM sollen auch auf der Suche enthalten sein .

Wie kann ich es möglich machen? Ich habe Land / Stadtzentrum lat, long-Koordinaten, Bereichs- / Radius (in denen wir Objekte herauszufinden) und Objektliefer Radius (für e.g.10 KM) und seine entsprechenden Koordinaten.

Können Sie mich leiten, wie das zu tun, PHP, MySQL?

War es hilfreich?

Lösung

Mit MySQL räumlichen Erweiterungen http://dev.mysql.com/doc/refman/ 5.1 / de / Raum-extensions.html

Auf der anderen Seite, wenn Sie nur andere Kreise identifizieren wollen, die mit gegebenen schneiden, würden sie alle diese sein, für die Entfernung zwischen den Zentren des Kreises ist weniger als Summe von Radius. Mit anderen Worten, unter der Annahme, dass Ihr Ausgangspunkt und Bereich von triple gegeben ist ( x 0 y 0 , r 0 ), müssen Sie alle ( x n y n , r n ), für die

√ (( x 0 - x n ) ² + ( y 0 - y n ) ²) ≤ r 0 + r n

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top