3

mapquest マップを統合し、mapquest API を使用するアプリケーションに取り組んでいます。

現時点では、次のことを実現したいと考えています。登録ユーザーは緯度と経度の情報を入力する必要があり、データベースにはこの情報をジオメトリ タイプ フィールドとして格納する必要があります。逆に、自分のアカウントを見ているユーザーには、入力された緯度と経度の情報が表示されます。

AsText以前の単純化されたコードベースでは、MySQL 関数とを使用して、MySQL クエリで直接これを実現しましたGeomFromText。しかし、今は CodeIgniter を使用しており、PHP で変換を行う必要があります

AsTextPHP で MySQLとGeomFromText関数に相当するものはありますか?

4

2 に答える 2

9

このPHP unpack関数は、座標情報を抽出するために必要なもののようです。

MySQLジオメトリ フィールドを WKB (Well Known Binary) 形式で格納します。このunpack関数は、適切な書式指定子が提供されると、その情報を抽出できます。次のコードは、必要な情報を正常に抽出したテスト スクリプトからのものです。

my formatfor unpack は参照のものとは若干異なりますのでご注意ください。これは、AsWKB()関数を使用して WKB 文字列が MySQL から取得されなかったため、余分な padding が含まれているためです。

<?php
    $padding = 0;
    $order   = 1;
    $gtype   = 1;
    $lon     = -73.91353;
    $lat     = 42.80611;

    $bindata = pack('LcLd2', $padding, $order, $gtype, $lat, $lon);

    printf("Packed: %s\n\n", bin2hex($bindata));

    $result = unpack('Lpadding/corder/Lgtype/dlatitude/dlongitude', $bindata);
    var_dump($result);
?>

MySQLおよびESRI Networkを参照します。

于 2012-08-28T14:42:40.263 に答える
0

私も、ジオメトリ フィールド データを抽出しようとしています。MySQLiクラスを使用して、データの行を取得し、フィールド タイプに従って表示しています。

ジオメトリ フィールド データをデコードする方法はまだわかりませんが、bin2hex関数を使用して表示できます。GeomFromText('POINT(-73.91353 42.80611)') を使用して保存されたポイントbin2hexは、50文字の文字列値を提供します

0000000001010000008d7a8846777a52c0417dcb9c2e674540

フィールド タイプ番号の部分的なリストは、ここにあります。

これがお役に立てば幸いです。さらに発見したら、ここでそれを伝えます。

于 2012-08-27T19:49:36.293 に答える