ASP.NET Core WebAPI 2019年最新和最佳方法,用于进行地理编码和反向地理编码

问题描述 投票:-1回答:2

我正在使用Entity Framework Core 2.2.3和MySql,ASP.NET Core 2.2 WebApi

是的,我知道这个问题(地理编码和反向地理编码)已被问过一百次,但它们已经过时了。在2019年,我想找出计算地理定位的最新和最好的方法。

在我的项目中,我在Property表中有地址,我需要

  1. 将地址转换为lat和lng
  2. 计算2个地址之间的距离
  3. 最好不要依赖第三方Lib,例如Google Map API

我知道我们可以使用EF Core进行地理编码并可能计算距离,但我发现document说它只适用于SqlServer,InMemory,PostgreSql等.MySql不在列表中。

然后我找到了System.Spatial,但它的目标是旧的.Net Framework。然后Microsoft.Spatial(它的目标是.NET平台标准1.1,所以我想它应该适用于.Net Core 2.2,对吗?),但是当我打开git sample时,它大概是2岁。

如果有人能指出正确的方向,我真的很感激。

谢谢。

更新

通过阅读OData Spatial Data后,我发现它与MS SQL紧密相关并且有一定的局限性(https://devblogs.microsoft.com/odata/using-geospatial-data/)?但是我使用MySql,似乎这不是我可以使用的方法。此文也是在2011年写回来的,无法看到最近的更新。

更新2我找到了NuGet Package 只是想知道这是否可以在.Net Core 2.2中使用?

在它的github上它说的是.NET Core,但是当我尝试从NuGet Package Manager安装它时,我看到它依赖于.NetFramework v4.5。 enter image description here

由于.NetFramework不是跨平台的,这是否意味着这个NuGet包将无法在Linux上正常运行?

c# asp.net asp.net-core geospatial geocoding
2个回答
1
投票

空间数据类型仅用于计算纬度/经度对之间的距离,并计算某个纬度/经度是否位于另一个纬度/经度的某个半径内。

地址(街道名称,门牌号码,城市名称,邮政编码及其任意组合)每天都会更新,因为每天都会建造新街道和新建筑物。

因此,您需要一个经常更新的数据库,将地址映射到纬度/经度。如果您不想使用第三方API such as Google offers,则必须下载并合并具有此数据的数据库。

其中一个例子是OpenStreetMap,您可以在其中下载数据并托管搜索API nomatim。当您阅读该方法时,您将决定将其卸载到第三方。


0
投票

最后,我使用Google Api使用RestSharp进行地理编码以进行api调用。

Google Api确实有NuGet Package,但它不包含here讨论的Geocoding API

© www.soinside.com 2019 - 2024. All rights reserved.