4

kartoza dockerイメージを使用して、 postgisで postgres サーバーを実行しています。ASP.NET Core アプリケーションと Enity Framework Core を使用して使用しているデータベースがあります。データベースには、次のエンティティで表される Park という名前のテーブルが含まれています。

[Table("Park")]
public class Park
{
     [Key]
     public int Id { get; set; }

     [Column(TypeName = "geography (point)")]
     public Point Location { get; set; }
}

ドキュメントで指定されているように、DbContext を作成しています。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.HasPostgresExtension("postgis");

    modelBuilder.Entity<Park>()
        .Property(p => p.Location)
        .HasColumnType("geography (point)");
}

次のコードでデータベースをシードします。

if (!Parks.Any())
{
    var park = new Park
    {
        Location = new Point(48.8566, 2.3522)
        {
            SRID = 4326
        }
    };

    Parks.Add(park);
    this.SaveChanges();
}

コードをテストするために、この公園とある地点の間の距離を計算します。

ここに画像の説明を入力

結果は、地理的距離ではなく、デカルト フレーム内の 2 点間の幾何学的距離に対応します。次のクエリと同等のものを取得することは可能ですか:

ラップ

4

1 に答える 1