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 点間の幾何学的距離に対応します。次のクエリと同等のものを取得することは可能ですか: