小编Tho*_*ang的帖子

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;
Run Code Online (Sandbox Code Playgroud)

对于前两行:

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)
Run Code Online (Sandbox Code Playgroud)

给出的结果是:

2.59422435413724e-005
4.11096095831604e-005
Run Code Online (Sandbox Code Playgroud)

即使它们处于rad,第二个结果也只是第一个结果的两倍.所以这让我感到困惑.然后我尝试将其输出为米:

SELECT ST_DISTANCE(
    ST_GeographyFromText('POINT(' || StartLon || ' ' || StartLat || ')'),
    ST_GeographyFromText('POINT(' || EndLon || ' ' || EndLat || ')'))
FROM i3_building.floordata;
Run Code Online (Sandbox Code Playgroud)

给出相同行的结果是:

2.872546829
4.572207435
Run Code Online (Sandbox Code Playgroud)

这不是我所期望的.我对PostGis和SRID不是很熟悉,所以这个问题可能看起来很简单,但请帮助我,我没有被@@

postgresql postgis distance srid epsg

8
推荐指数
1
解决办法
9447
查看次数

标签 统计

distance ×1

epsg ×1

postgis ×1

postgresql ×1

srid ×1