sql >> データベース >  >> RDS >> PostgreSQL

それらの間の距離で2つのポイントを追加するにはどうすればよいですか(SRID =32636)?

    geometryをキャストできます geographyへ および ST_Project それ(あなたが望む方位角で)。そうすることで、距離をメートル単位で簡単に指定できます。

    CREATE TEMPORARY TABLE test_table (name text, geo geometry(point,(32636)));
    INSERT INTO test_table VALUES ('foo','SRID=32636;POINT(2076155.32235105 4828109.18280588)');
    
    SELECT 
     ST_AsText(
      ST_Transform(
       ST_Project(
         ST_Transform(geo,4326)::geography,10,radians(45.0))::geometry,
       32636)
     )
    FROM test_table;
    
                    st_astext                 
    ------------------------------------------
     POINT(2076150.11319696 4828116.26815917)
    (1 Zeile)
    

    ST_Distanceを使用して距離を確認できます

    SELECT 
      ST_Distance(
        ST_Transform(geo,4326)::geography,
        ST_Project(ST_Transform(geo,4326)::geography,10,radians(45.0))::geometry )
    FROM test_table;
    
    st_distance 
    -------------
              10
    

    ST_Transformを使用しています 投影されたSRSからlon/lat SRSに移動し、geographyにキャストできるようにします。 そうしないと、エラーが発生します:

    SELECT geo::geography FROM test_table;
    
    ERROR:  Only lon/lat coordinate systems are supported in geography.
    

    さらに読む: 50マイル離れた場所(北、45%北東、45%南西)を計算する




    1. PostgresはWHERE句をウィンドウ関数(集計)を使用してVIEWにプッシュダウンしますか?

    2. ADO.NETとSQLServerManagementStudioの比較-ADOのパフォーマンスが低下

    3. MySQLテーブルに行が存在するかどうかをテストするための最良の方法

    4. java.sql.SQLException:ORA-06550:Javaコードからプロシージャを呼び出した後