【发布时间】:2019-11-12 10:41:07
【问题描述】:
我正在使用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();
}
现在为了测试我的代码,我计算了这个公园和某个点之间的距离:
结果对应于笛卡尔坐标系中两点之间的几何距离,而不是地理距离。是否有可能获得以下查询的等价物:
【问题讨论】:
标签: postgresql .net-core entity-framework-core postgis nettopologysuite