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

藏色散人
Freigeben: 2023-04-06 14:52:01
nach vorne
4237 Leute haben es durchsucht

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
Nach dem Login kopieren
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'),//鳌山坐标
);
Nach dem Login kopieren

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();
}
Nach dem Login kopieren
Ausführungsergebnis
int(1)
int(1)
int(1)
int(1)
int(1)
int(1)
Nach dem Login kopieren

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();
}
Nach dem Login kopieren
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
        )
)
Nach dem Login kopieren

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();
}
Nach dem Login kopieren
Ausführungsergebnisse: 5 Berge wurden gefunden

string(7) "94.4219"
Nach dem Login kopieren

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();
}
Nach dem Login kopieren
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
                )
        )
)
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:jmsite.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!