私のPHPアプリケーションに空間インデックスのデータを抽出するには?

私は、ある場所の地理座標を格納する私のテーブルにタイプPOINTの空間インデックスを持っています。

私は正常に私のテーブルにこれを使用してPOINTを挿入することができました:

$point = new Zend_Db_Expr("GeomFromText('POINT(-12.461334 130.841904)')");
$property->setLocation($point);

私はZendを使用しています。私は緯度と経度の値をアプリケーションに戻す方法を理解しようとしています。誰も私にこれを助けてくれますか?

今私はPOINTの格納された値を返すために次のコードを使用しています。

$properties->getLocation();

私を返すPHP関数はありません-12.461334 130.841904

1
latlngはバイナリデータ形式であり、SQL文X(latlng)またはY(latlng)で抽出する必要があります。
追加された 著者 Question Overflow,

1 答え

ジオメトリポイントとして値を保存している場合は、使用可能な Geometry Functions (距離や境界線を計算するために 'GLength'や 'LineString'など)、次に最も一般的に浮動小数点値を出力し、このテーブルを例

event
id -> int -> 11 -> unsigned -> primary -> auto increment
name -> varchar -> 255
location -> point

このクエリを使用すると、指定された緯度、長い位置、およびテーブルイベント内の行の値の間の距離が取得されます

SELECT
    ev.id,
    ev.name,
    (
        GLength(
            LineString(
                (
                    PointFromWKB(
                        POINT(
                            32.660629,
                            -117.106354
                        )
                    )
                ),
                (
                    ev.location
                )
            )
        )
    ) * 100
    AS distance
FROM
event ev

結果としてあなたは

=====================================
= id = name     = distance          =
=====================================
= 1  = event x  = 16.956332397071797=
=====================================

これをZendクエリとして実装するには、これと似たようなことを行います(実装に応じて、$ tableの値はどこにありますか)

$point = new stdClass();
$point->lat = 32.660629;
$point->lon = -117.106354;
$table = $this->getDbTable();
$resultSet = $table->fetchAll(
    $table->select()
        ->from(
            $table,
                array(
                    'id',
                    'name',
                    new Zend_Db_Expr("
                            (
                                GLength(
                                    LineString(
                                        (
                                            PointFromWKB(
                                                POINT(
                                                    {$from->lat},
                                                    {$from->lon}
                                                )
                                            )
                                        ),
                                        (
                                            location
                                        )
                                    )
                                )
                            ) * 100
                            AS 'distance'
                    "
                    ),
                    'category',
                    'user'
                )
            )
        );

お役に立てれば。

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com