私は現在、屋内マップ ナビゲーション アプリケーションを実行しています。私がやろうとしているのは、建物内のマップ ポイントのデータベースを構築することです。
私が使用するすべての座標は Google マップから取得されます (つまり、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
それらは rad 単位ですが、2 番目の結果は最初の結果の 2 倍しかありません。だから私は混乱します。次に、メートルとして出力しようとします。
SELECT ST_DISTANCE(
ST_GeographyFromText('POINT(' || StartLon || ' ' || StartLat || ')'),
ST_GeographyFromText('POINT(' || EndLon || ' ' || EndLat || ')'))
FROM i3_building.floordata;
同じ行の結果は次のとおりです。
2.872546829
4.572207435
これは私が期待したものでもありません。私は PostGis と SRID にあまり詳しくないので、この質問は簡単に思えるかもしれませんが、助けてください。