我正在使用Gaia-SINS提供的这个教程与SpatiaLite for Android一起工作。我成功地创建了空间数据库并且它也能正常工作。但是,我在获取点(或任何其他几何体)之间距离的时候遇到了问题。我在网上搜索了很多示例,都使用
Transform
来获取以米为单位的距离。我使用的投影方式是4326,将点插入为POINT(Lon Lat)
。为了计算距离,我将其转换为SRID 3035的投影方式。问题在于,当我在Android上使用变换时,它返回NULL。我将其与SpatiaLite_GUI进行了比较,在其中此查询有效。有人能告诉我为什么手机上的Transform
不起作用吗?是因为投影方式3035还是其他原因?[编辑]这里是一个简单的SQL,它在SpatiaLite GUI中可以正常工作,但在Android上却不能。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;