このチュートリアルを使用して、 Gaia-SINSの Android 用 SpatiaLite を使用しています。
空間データベースを作成できましたが、正常に動作します。しかし、ポイント (またはその他のジオメトリ) 間の距離をメートル単位で取得するのに問題があります。
私は Web を検索していて、Transform
距離をメートル単位で取得するために使用する多くの例を見つけました。私が使用する投影法は 4326 で、ポイントを として挿入しPOINT(Lon Lat)
ます。距離を計算するために、SRID 3035 で投影に変換します。
問題は、Android で変換を使用すると NULL が返されることです。SpatiaLite_GUIと比較しましたが、このクエリは正常に機能します。
Transform
電話が機能しない理由を誰か教えてもらえますか? 投影3035か何かのためですか?
[編集]
Android ではなく SpatiaLite GUI で動作する簡単な SQL を次に示します。
SELECT Distance(
Transform(GeomFromText('POINT(21.865466 43.327717)', 4326), 3035),
Transform(GeomFromText('POINT(21.895659 43.32116)', 4326), 3035)) as Distance;
このクエリは、SpatiaLite GUI では 2550.215591 を返し、Android では 0.0 を返します。2.5kmが正しい距離です。
Transform
SpatiaLite GUI と Android の両方で、0.030897 を返さない同じクエリ。
SELECT Distance(
GeomFromText('POINT(21.865466 43.327717)', 4326),
GeomFromText('POINT(21.895659 43.32116)', 4326)) as Distance;