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