我现在正在做一个室内地图导航应用程序,我想要做的是在建筑物中建立一个地图点数据库。PostGis距离计算
我使用的所有坐标都来自Google Map(这意味着EPSG是3857)。我现在需要做的是找到米的距离以及使用D_Within米
当我尝试2点之间解压出来的距离:
SELECT ST_DISTANCE(
ST_GeomFromText('POINT(' || StartLon || ' ' || StartLat || ')',3857),
ST_GeomFromText('POINT(' || EndLon || ' ' || EndLat || ')',3857))
FROM i3_building.floordata;
对于第2排有:
鉴于Start: 103.776047 1.292149; End: 103.77607 1.292212 (3 meters away)
Start: 103.776070 1.292212; End: 103.77554 1.292406 (50 meters away)
结果是:
2.59422435413724e-005
4.11096095831604e-005
即使他们是在弧度,第二重这只是第一次的两倍。所以这让我感到困惑。 后来我试着将它输出为米:
SELECT ST_DISTANCE(
ST_GeographyFromText('POINT(' || StartLon || ' ' || StartLat || ')'),
ST_GeographyFromText('POINT(' || EndLon || ' ' || EndLat || ')'))
FROM i3_building.floordata;
为同一行给出的结果是:
2.872546829
4.572207435
这不是我所预期的那样好。 我对PostGis和SRID并不是很熟悉,所以这个问题可能看起来很简单,但请你帮我解决,我被卡住了@@
感谢您的回复。 我也尝试过4326,但与3857没有太大区别。 对于第一组的距离,它距离我的办公室3米远,所以我对它非常了解。 我也尝试从这里计算它:http://boulter.com/gps/distance/ - 相同的结果,3米。 –
你是什么意思没有太大的不同?我会说7.45米和62.74是完全不同的。不过,这是st_distance_sphere问题,因为这需要经纬度输入,其中st_distance需要距离投影坐标。 3857和4326是完全不同的,分别是米和度,但您必须将它们插入正确的功能才能得到正确的答案:D –
对不起,只是出去试一试,大概7米左右是非常正确的。感谢您的帮助:) –