ASP.NET Core WebAPI Последний и лучший подход в 2019 году для геокодирования и обратного геокодирования - PullRequest
0 голосов
/ 15 апреля 2019

Я использую Entity Framework Core 2.2.3 с MySql, ASP.NET Core 2.2 WebApi

Да, я знаю, что этот вопрос (геокодирование и обратное геокодирование) задавался сто раз, но их нетДата.В 2019 году я хотел бы узнать о новейшем и лучшем подходе расчета геолокации.

В моем проекте у меня есть адреса в таблице свойств, и мне нужно

  1. преобразовать адрес в лат и lng
  2. вычислить расстояние между 2 адресами
  3. лучше не зависеть от сторонних библиотек, например, Google Map API

Я знаю, что мы можем использовать EF Core для геокодирования и, вероятно, для вычисления расстояния, но я нашел документ , говорящийэто только для SqlServer, InMemory, PostgreSql и т. д. MySql отсутствует в списке.

Затем я обнаружил System.Spatial , однако он предназначен для старой .Net Framework.Затем Microsoft.Spatial (он нацелен на .NET Platform Standard 1.1, так что я думаю, что все будет в порядке для .Net Core 2.2, верно?), Но когда я открыл git sample ,ему около 2 лет.

Я действительно ценю, если кто-нибудь может указать мне правильное направление.

Спасибо.

Обновление

Прочитав Пространственные данные OData , я обнаружил, что он тесно связан с MS SQL и имеет определенные ограничения (https://devblogs.microsoft.com/odata/using-geospatial-data/)? Однако я использую MySql и, похоже, это не тот подход, который я мог быИспользование. Также эта статья была написана еще в 2011 году и не может видеть последнее обновление.

Обновление 2 Я нашел NuGet Package
Просто удивительноможно ли это использовать в .Net Core 2.2?

На этом github написано для .NET Core, НО, когда я пытаюсь установить его из диспетчера пакетов NuGet, я обнаружил, что он зависит от.NetFramework v4.5. enter image description here

Поскольку .NetFramework не является кросс-платформеннымtform, означает ли это, что пакет NuGet не будет правильно работать в Linux?

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Пространственные типы данных предназначены только для вычисления расстояний между широтными и долгосрочными парами и для вычисления того, находится ли определенный широту / долгота в пределах определенного радиуса другого широты и долготы.

Адреса (названия улиц, номера домов, названия городов, почтовые индексы и любые их комбинации) обновляются ежедневно по мере строительства новых улиц и новых зданий.

Таким образом, выпотребуется часто обновляемая база данных, которая сопоставляет адреса с широтой / долготой.Если вы не хотите использовать сторонний API , такой как Google, предлагает , вам придется загрузить и включить базу данных, в которой есть эти данные.

Одним из таких примеров является OpenStreetMap , куда вы можете загрузить данные и разместить API поиска nomatim .К тому времени, как вы прочтете инструкции, вы решите, что do хотите передать это третьей стороне.

0 голосов
/ 17 апреля 2019

В конце концов, я использую Google Api для геокодирования с помощью RestSharp, чтобы сделать вызов API.

В Google Api есть пакет NuGet, но он не содержит API геокодирования, как обсуждалось здесь

...