【发布时间】:2014-03-27 14:59:32
【问题描述】:
我正在使用 Gaia-SINS 和 this tutorial 使用 Android 版 SpatiaLite。
我设法创建了空间数据库,它工作正常。但我无法以米为单位获取点(或任何其他几何体)之间的距离。
我在网上搜索,发现了许多使用Transform 以米为单位的距离示例。我使用的投影是 4326,我将点插入为POINT(Lon Lat)。为了计算距离,我将其转换为使用 SRID 3035 的投影。
问题是,当我在 Android 上使用转换时,它返回 NULL。我将其与SpatiaLite_GUI 进行了比较,在其中该查询运行良好。
谁能告诉我为什么电话上的Transform 不起作用?是因为投影3035还是别的什么原因?
[编辑]
这是在 SpatiaLite GUI 中运行而不在 Android 上运行的简单 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.5公里是正确的距离。
没有Transform 的相同查询在 SpatiaLite GUI 和 Android 中都返回 0.030897。
SELECT Distance(
GeomFromText('POINT(21.865466 43.327717)', 4326),
GeomFromText('POINT(21.895659 43.32116)', 4326)) as Distance;
【问题讨论】:
-
既然是 SQL,为什么还需要 Android 代码?
-
你是对的。这是android代码的问题。我忘了在这里发布答案。
标签: android spatialite