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.
Als ich GEO lernte, habe ich zur Demonstration auch die Koordinaten von Bergen verwendet einige Bergkoordinaten Koordinaten
1. Koordinaten
116.517159,39.922267
$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(); }
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(); }
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 ) )
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();
}
string(7) "94.4219"
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();
}
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!