Heim >Backend-Entwicklung >PHP-Tutorial >PHP verwendet den GEO-Befehl (geografischer Standort) von Redis

PHP verwendet den GEO-Befehl (geografischer Standort) von Redis

藏色散人
藏色散人nach vorne
2019-05-10 09:54:014319Durchsuche

Redis bietet seit Version 3.2 Unterstützung für GEO (geografischer Standort), aber die Erde ist keine perfekte Kugel und die Abweichung kann im schlimmsten Fall 0,5 % betragen. Bereiche in der Nähe der Pole werden nicht unterstützt. Der gültige Längengrad liegt zwischen -180 Grad und 180 Grad. Wenn er den Bereich überschreitet, wird ein Fehler gemeldet.

PHP verwendet den GEO-Befehl (geografischer Standort) von Redis

Als ich GEO lernte, habe ich zur Demonstration auch die Koordinaten von Bergen verwendet einige Bergkoordinaten Koordinaten

1. Koordinaten

116.517159,39.922267
zum Schlüssel der Bergkoordinaten hinzufügen
$mountainCoordinates = array(
    array('115.793844', '40.584459', 'Hai_tuo'),//海陀山坐标
    array('115.056232', '39.948933', 'Small_wutai'),//小五台山坐标
    array('114.173822', '27.474563', 'Wu_gong'),//武功山坐标
    array('111.341648', '25.518178', 'Leek_ridge'),//韭菜岭坐标
    array('103.901761', '31.60487', 'Jiu_ding'),//九顶山坐标
    array('107.398009', '34.057777', 'Ao_Shan'),//鳌山坐标
);

2

try {
    $redis = new Redis();
    $redis->connect('192.168.75.132', 6379);
    foreach ($mountainCoordinates as $coordinates){
        $param = array('geoadd', 'mountainCoordinates');
        $param = array_merge($param, $coordinates);
        $ret = call_user_func_array(array($redis, 'rawCommand'), $param);
        print_r($ret);
    }
} catch (Exception $e){
    echo $e->getMessage();
}
Ausführungsergebnis
int(1)
int(1)
int(1)
int(1)
int(1)
int(1)

3. Berechnen Sie den Abstand zwischen den beiden Koordinaten

try {
    $redis = new Redis();
    $redis->connect('192.168.75.132', 6379);
    $param = array('geopos', 'mountainCoordinates', 'Hai_tuo', 'Wu_gong', 'Jiu_ding');
    $ret = call_user_func_array(array($redis, 'rawCommand'), $param);
    print_r($ret);
} catch (Exception $e){
    echo $e->getMessage();
}
Ausführungsergebnis: Der Abstand zwischen Haituo Mountain und Der Berg Xiaowutai ist 94,4219 km lang Ausführungsergebnis: nur das Meer Tuoshan, 95,8884 km von mir entfernt

Array
(
    [0] => Array
        (
            [0] => 115.79384654760360718
            [1] => 40.58445845049069334
        )
    [1] => Array
        (
            [0] => 114.1738244891166687
            [1] => 27.47456377424472151
        )
    [2] => Array
        (
            [0] => 103.90176326036453247
            [1] => 31.60486909089710394
        )
)

5. Nehmen Sie meine Koordinaten als Ursprung und nehmen Sie die Koordinaten entsprechend dem Radius von 1500 km (finden Sie die Berge innerhalb von 1500). Kilometer von mir entfernt)

try {
    $redis = new Redis();
    $redis->connect('192.168.75.132', 6379);
    $param = array('geodist', 'mountainCoordinates', 'Hai_tuo', 'Small_wutai', 'km');
    $ret = call_user_func_array(array($redis, 'rawCommand'), $param);
    var_dump($ret);
} catch (Exception $e){
    echo $e->getMessage();
}
Ausführungsergebnisse: 5 Berge wurden gefunden

string(7) "94.4219"

6. Nehmen Sie die Koordinaten des Xiaowutai-Berges als Ursprung und nehmen Sie die Koordinaten basierend auf einem Radius von 1000 km (Finden Sie die Berge im Umkreis von 1000 Kilometern vom Xiaowutai-Berg)

try {
    $redis = new Redis();
    $redis->connect('192.168.75.132', 6379);
    $param = array('georadius', 'mountainCoordinates', '116.517159', '39.922267', '100', 'km', 'WITHDIST', 'WITHCOORD');
    $ret = call_user_func_array(array($redis, 'rawCommand'), $param);
    print_r($ret);
} catch (Exception $e){
    echo $e->getMessage();
}
Ausführungsergebnisse: Mit Ausnahme von Xiaowutai selbst wurden Aoshan und Haituo Mountain gefunden

Array
(
    [0] => Array
        (
            [0] => Hai_tuo
            [1] => 95.8884
            [2] => Array
                (
                    [0] => 115.79384654760360718
                    [1] => 40.58445845049069334
                )
        )
)

Das obige ist der detaillierte Inhalt vonPHP verwendet den GEO-Befehl (geografischer Standort) von Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jmsite.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vorheriger Artikel:Was macht PHP?Nächster Artikel:Was macht PHP?