NEST Elasticsearch GeoPoint класс - PullRequest
0 голосов
/ 06 мая 2020

У нас есть поле, которое указано как GeoPoint в преобразовании индекса:

.GeoPoint(d => d.Name(c => c.Location))

Если мы создадим объект и присвоим этому полю значение, используя следующее:

location = new GeoCoordinate(54.34445, -3.2344)

Индекс показывает это как GeoPoint со значением -3.2344, 54.34445

Однако, если мы индексируем с использованием строки, такой как: "54.34445, -3.2344", индекс в Kibana показывает это также как GeoPoint, но в формате 54.34445, -3.2344

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

Фактически, создание одной и той же точки двумя разными способами в соответствии с документами создает два совершенно разных места в индексе

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

A GeoCoordinate ctor принимает latitude и longitude в этом порядке (есть перегрузка для принятия необязательного значения z).

Он сериализуется в [lon, lat], который соответствует формату Geo JSON RF C. Хорошо известный текст (WKT), другой формат, используемый для представления геометрии, использует порядок x, y, которые соответствуют lon и lat.

Координаты, выраженные в виде строки, имеют форму lat,lon. См. Важное предупреждение в документах .

0 голосов
/ 07 мая 2020

Существует несколько способов определения / отображения координат, в первую очередь строка формата "lat,lon" или массив формы [lon,lat].

Обратите внимание, что Kibana скорее всего, придерживается только одного формата ("lat,lon" - 54.34445, -3.2344 находится в Великобритании, обратное направление у побережья Сомали), в то время как индексирование do c значений поддерживает несколько.

...