首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spatialite Android (变换和距离)

Spatialite Android (变换和距离)
EN

Stack Overflow用户
提问于 2014-03-27 14:59:32
回答 1查看 884关注 0票数 3

我正在使用SpatiaLite为安卓系统工作,盖亚-罪恶使用本教程

我成功地创建了空间数据库,它运行得很好。但我在以米为单位获取点(或任何其他几何学)之间的距离时遇到了问题。

我在网上搜索,并找到了许多使用Transform获取距离的例子。我使用的投影是4326,我插入点作为POINT(Lon Lat)。为了计算距离,我用SRID 3035将其转换为投影。

问题是,当我在Android上使用transform时,它返回NULL。我将它与图形用户界面进行了比较,在它中,这个查询工作得很好。

有人能告诉我为什么Transform在电话里不起作用吗?是因为投影3035还是别的什么原因吗?

编辑

下面是在SpatiaLite图形用户界面上工作的简单SQL,而不是在Android上工作的。

代码语言:javascript
复制
SELECT Distance(
    Transform(GeomFromText('POINT(21.865466 43.327717)', 4326), 3035),
    Transform(GeomFromText('POINT(21.895659 43.32116)', 4326), 3035)) as Distance;

此查询在SpatiaLite图形用户界面中返回2550.215591,在Android中返回0.0。2.5公里是正确的距离。

同一个没有Transform的查询在SpatiaLite图形用户界面和SpatiaLite中都返回0.030897。

代码语言:javascript
复制
SELECT Distance(
    GeomFromText('POINT(21.865466 43.327717)', 4326),
    GeomFromText('POINT(21.895659 43.32116)', 4326)) as Distance;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-16 11:16:06

让我回答我自己的问题。

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

代码语言:javascript
复制
Database db = new Database();
db.open(Constants.SQLITE_OPEN_READWRITE | Constants.SQLITE_OPEN_CREATE);
db.spatialite_create();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22691465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档