本文介紹了EF核心空間數據:查詢和獲取以米為單位的距離的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我可以查詢并得到離客戶最近的學位位置:
serviceQuery = serviceQuery.Where(s => s.Location.Distance(currentLocation) < <degree>)
.OrderBy(s => s.Location.Distance(currentLocation));
在C#中鍵入NetTopologySuite.Geometries.Point
,在SQL Server中鍵入geography
。
如何在查詢中提供米而不是度,并獲得米距離而不是度?
在客戶端將結果度數轉換為米是可以接受的。
推薦答案
我發現了問題。
PostgreSQL(我們現在正在使用)和其他數據庫可能有兩種類型的空間數據:幾何和地理。
您可以參考這些鏈接了解更多信息(Link 1、Link 2)。
長話短說,如果您正在使用地球的經緯度,并且希望您的計算使用米單位,則需要使用地理類型。
屬性:
[Column(TypeName="geography (point)")]
public Point Location { get; set; }
流暢接口:
builder.Entity<YourEntity>()
.Property(e => e.Location)
.HasColumnType("geography (point)");
如果不指定,則默認為用于笛卡爾坐標的幾何圖形。
順便說一句,數據庫數據的SRID必須與您用于查詢的位置相同。
這篇關于EF核心空間數據:查詢和獲取以米為單位的距離的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,