3

我正在使用本教程从Gaia-SINS 使用SpatiaLite for Android 。

我设法创建了空间数据库,它工作正常。但是我无法以米为单位获得点(或任何其他几何图形)之间的距离。

我在网上搜索,发现了许多用于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;
4

1 回答 1

0

让我回答我自己的问题。

问题在于创建数据库。我在代码中创建它,我没有添加spatialite_create()在数据库中创建空间元数据。

Database db = new Database();
db.open(Constants.SQLITE_OPEN_READWRITE | Constants.SQLITE_OPEN_CREATE);
db.spatialite_create();
于 2014-06-16T11:16:06.497 回答