我现在正在做一个室内地图导航应用程序,我想做的是建立建筑物中地图点的数据库。
我使用的所有坐标均取自 Google 地图(这意味着 EPSG 为 3857)。我现在需要做的是找到以米为单位的距离并使用以米为单位的 D_Within
当我尝试提取两点之间的距离时:
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 不太熟悉,所以这个问题可能看起来很简单,但请帮助我,我被困了没有@@