gpt4 book ai didi

android - Spatialite Android(转换和距离)

转载 作者:太空狗 更新时间:2023-10-29 15:05:08 25 4
gpt4 key购买 nike

我正在使用来自 Gaia-SINS 的 SpatiaLite for Android使用 this tutorial .

我设法创建了空间数据库,并且运行良好。但是我无法获得以米为单位的点(或任何其他几何图形)之间的距离。

我在网上搜索,发现许多示例使用 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.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;

最佳答案

让我回答我自己的问题。

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

Database db = new Database();
db.open(Constants.SQLITE_OPEN_READWRITE | Constants.SQLITE_OPEN_CREATE);
db.spatialite_create();

关于android - Spatialite Android(转换和距离),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22691465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com