カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

座標範囲の算出

ある地点から指定した半径以内に該当する座標を絞り込みたいとき、検索に使用する値を得るサンプルです。

考え方としては、指定した半径を基に矩形を作成し、その範囲に含まれる座標を検索する、というものです。
残念ながら“指定した半径を基に作成した円の中に含まれる”ではありません。

通常は2点間の距離を算出し、半径以内に収まるかを出したほうがいいのですが、比較するデータが多い場合は1つ1つ処理しているとかなり負荷がかかります。
そのため、ざっくり検索する方法をご紹介します。

今回はPHPのコードですが、JavaScriptなど他の言語でも利用できます。

まず、算出に必要な度数毎の距離を宣言します。

// 緯度1秒の平均距離 約30.9m
// 緯度35度上の緯度1秒の距離 約30.8m
$lat_length = 30.9;

// 緯度35度上の経度1秒の距離 約25m
$lng_length = 25;

探したい範囲の半径(km)を設定します。 続きを読む…»

3,970 views

ランダムなパスワード生成

function mkCrypt()
{
    // 配列生成
    $ARRAY1 = range("0", "9");
    $ARRAY2 = range("a", "z");
    $ARRAY3 = range("A", "Z");
    $ARRAY  = array_merge($ARRAY1, $ARRAY2, $ARRAY3);

    $a_pw = "";
    $cnt  = count($ARRAY) - 1;

    // 乱数初期化
    srand((double)microtime()*1000000);


    // ランダム暗号生成
    for($i = 1; $i < = 8; $i++)
    {
        $num   = round(rand(0, $cnt));
        $a_pw .= $ARRAY[$num];
    }

    return $a_pw;
}

または、一意なIDを生成するuniqid関数を使用する

md5(uniqid()); //php5以降のみ
md5(uniqid(rand(), true));

Apache Basic 認証用パスワード生成
function CryptBasic($id, $pw)
{
    $sal = substr($id, 0, 2);
    $pw_crypt = crypt($pw, $sal);

    return $pw_crypt;
}
1,228 views

xmlを生成する

// Create XML Object
$xml = new DOMDocument("1.0", "UTF-8");

// Make a Parent Node
$dataset = $xml->createElement("dataset");
$xml->appendChild($dataset);

$data = $xml->createElement("data");
$dataset->appendChild($data);

// make child node
$data->appendChild($xml->createElement("key", $value));

// Show Data
echo $xml->saveXML();
1,032 views

xml形式の文字列からxmlオブジェクトを生成する

$xmlstr = file_get_contents("[XMLファイル名]");
if(!$dom = domxml_open_mem($xmlstr))
{
    echo "Error while parsing the document\n";
    exit;
}
$root = $dom->document_element();
$childnodes = $root->child_nodes();
foreach ($childnodes as $value)
{
    $nodeArray[$value->tagname] = $value->get_content();
    $chnode = $value->child_nodes();

    foreach($chnode as $v)
    {
        echo $v->tagname . " : " . $v->get_content() . "<br />";
    }

    echo "<br />";
}
1,242 views

PHPで外部サーバーの画像を取得・保存

php.iniがallow_url_fopen=Onになっていれば可能

// データを取得
$data = file_get_contents("http://URL/To/Filename", FILE_BINARY);
// データを任意の場所に保存
file_put_contents("/PATH/TO/FILENAME", $data);
5,328 views