PHPを使用して緯度と経度をピクセル座標に変換する方法

PHPz
リリース: 2023-04-24 14:20:37
オリジナル
646 人が閲覧しました

Web テクノロジーの継続的な発展に伴い、地図を通じて情報を表示する Web サイトがますます増えており、地図上に適切なマーキング ポイントを表示することは非常に重要な技術的問題です。地図を使用してデータを表示する場合、地図上のマーカー ポイントを自動的に配置するなど、地図上の経度と緯度の座標をピクセル座標に変換する必要がある場合があります。そこで今回は、PHPを使って緯度と経度をピクセル座標に変換する方法を紹介します。

経度、緯度、ピクセル座標とは

経度と緯度をピクセル座標に変換する方法を説明する前に、経度、緯度、ピクセル座標の基本概念を理解する必要があります。

地図から取得される座標は経度と緯度です。経度は地球の西の点の位置を指し、緯度は赤道の南または北の点の位置を指します。 。

ピクセル座標は、画面上のピクセルで構成される画面上の座標です。

データを地図上に表示する場合、特定の場所を特定するために緯度と経度をピクセル座標に変換する必要があります。

ピクセルに基づいて緯度と経度を計算する

次に、ピクセル座標に基づいて緯度と経度を計算する方法を学びます。このプロセスでは、基本的な数学を使用する必要があります。このプロセスのコードは次のとおりです。

function pixel2LatLng($x, $y, $zoom) {
    $numTiles = 1 << $zoom; // 2 ^ zoom
    $tileSize = 256;
    $x /= $tileSize;
    $y /= $tileSize;
    $x = min($x, $numTiles - 1);
    $y = min($y, $numTiles - 1);
    $lng = ($x / $numTiles) * 360.0 - 180.0;
    $lat = rad2deg(atan(sinh(pi() * (1 - 2 * $y / $numTiles))));
    return [&#39;lat&#39; => $lat, 'lng' => $lng];
}
ログイン後にコピー

この関数は、ピクセルの $x、$y 座標と、ズーム レベルを記述する $zoom パラメータの 3 つのパラメータを受け取ります。次に、標準 2D マップ タイルの数と各タイルのサイズ (256 ピクセル) を表す 2 つの変数 $numTiles と $tileSize を作成します。

ピクセル座標を変換するときは、まず座標を $tileSize で除算して、座標が標準範囲内に収まるようにする必要があることに注意してください。次に、マップ表示領域を超えないように、各次元の最大値に制限します。

次に、簡単な数式を使用して緯度と経度を計算します。まず、ピクセル座標 $x に対応する経度である $lng を計算します。これを行うには、減算計算 (([$x / $numTiles) * 360.0 - 180.0]) を使用して、ピクセルの度スケールを取得し、そこから 180 度を減算します。 180 度を減算する必要があるのは、経度が -180 ~ 180 度に等しくなる可能性があるためです。したがって、値をこの範囲に制限する必要があります。

最後に、緯度の値を計算し、$lat 座標と $lng 座標を含む連想配列を返します。

経度と緯度に基づいてピクセル座標を計算する

上記のプロセスの逆に、経度と緯度に基づいてピクセル座標点を計算することもできます。このプロセスのコードは次のとおりです。

function latLng2Pixel($latitude, $longitude, $zoom) {
    $numTiles = 1 << $zoom; // 2 ^ zoom
    $tileSize = 256;
    $x = round(($longitude + 180.0) / 360.0 * $numTiles);
    $y = round((1.0 - log(tan(deg2rad($latitude)) + 1.0 / cos(deg2rad($latitude))) / pi()) / 2.0 * $numTiles);
    return [&#39;x&#39; => $x * $tileSize, 'y' => $y * $tileSize];
}
ログイン後にコピー

この関数は、経度と緯度に基づいてピクセル座標を計算する点が異なり、その逆ではありません。以前と同じ変数 $numTiles と $tileSize を使用し、関数に渡される緯度と経度の値を表す $lat 変数と $lng 変数を導入します。

次に、最初に簡単な計算を実行して、$x のピクセル座標を取得します。この式の考え方は、地図上を移動するときに経度が -180 度から 180 度まで変化する可能性があるため、まず指定された経度に 180 度を加算して、0 度を決定した後、計算結果は正の値です。次に、この値を 360 度で除算して小数点位置の x 座標を取得し、それにマップの 2 のべき乗数 $numTiles を乗算してピクセル座標を取得します。

次に、$y のピクセル座標を計算します。地図上を移動すると、緯度は -90 度から 90 度まで変化する可能性があります。この式の考え方は、基準点 (赤道) から開始して、正接関数と逆正接関数を使用して、見つけたい点までの距離とその周囲の距離を計算するというものです。最後に、$tileSize で除算して、ピクセル座標を座標ではなくピクセルに変換します。

最後に、$x 座標と $y 座標を含む連想配列が返されます。

まとめ

以上が経度・緯度からピクセル座標への変換と、ピクセル座標から経度・緯度への変換のPHP実装方法です。これら 2 つの変換手法は、マップを使用してデータを表示する場合に非常に役立ちます。この記事がお役に立てば幸いです!

以上がPHPを使用して緯度と経度をピクセル座標に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!