3

500Kポイントのデータベースでlat/lng範囲検索を高速化することを期待して、MySQLGeospatial拡張機能の使用を開始しました。新しいGEOMETRYpが作成されます。

問題:返される値は、小数点以下ではなく、単にpです。によって値は返されません。冗長な列があったので、必要なlatlng値を取得できました。しかし、私はとcolsを削除することを考えており、ただに依存しています。AsText(p)(BLOB)GeomFromText(p)latlnglatlngp

既存のLat/Lng値をポイントに変換

UPDATE listings SET p = GeomFromText('POINT(39.948177 -75.174324)') WHERE listing_id = '585221';

GEOMTRY列からLatLngを取得しようとしましたp

SELECT listing_id, lat, lng, GeomFromText(p), AsText(p), p from listings WHERE MBRContains( GeomFromText('Polygon((39 -76, 40 -76, 40 -74, 39 -74, 39 -76))'), p)
4

1 に答える 1

5

使用するAsText場合は、オブジェクトをWKT形式で取得します。ポイント座標を抽出するには、次を使用します。

SELECT listing_id X(p), Y(p)
FROM listings
WHERE MBRContains( GeomFromText('Polygon((39 -76, 40 -76, 40 -74, 39 -74, 39 -76))'), p)

MySQLはAsText、複雑なオブジェクトの場合は非常に長くなる可能性があるため、おそらく結果をBLOBとして返します。結果を表示するために使用しているものは何でもそれに対処できないというだけですが、テキストはそこにあります。

于 2012-04-06T13:50:32.320 に答える