Mongo С# Driver - GeoJson Polygon для GeoJsonLinearRingCoordinates <geojson2dcoordinates>

63
8

Я новичок в драйвере Mongo С#, и я пытаюсь создать запрос на пересечение в С#. У меня есть функция, работающая в Javascript, но я борюсь с некоторыми классами в драйвере Mongo.

На данный момент у меня GeoJson вытягивает штраф, но когда я иду, чтобы создать объект для перехода к запросу пересечения, у меня нет подходящих параметров. На данный момент я использую следующий пост для моделирования моего фильтра: Загрузка полигонов из MongoDB, которые полностью содержат известный многоугольник

Как преобразовать строку geojson в список "координат" для создания объекта GeoJonLinearRingCoordinates?

Вот пример полигона, который я пытаюсь использовать (графство Кэрролл Огайо):

{[  [    
[ -80.861994, 40.599404 ],
[ -80.863567, 40.555411 ],
[ -80.92092, 40.556315 ],
[ -80.924566, 40.467975 ],
[ -80.940153, 40.468349 ],
[ -80.941911, 40.4247 ],
[ -81.100097, 40.428928 ],
[ -81.212309, 40.433457 ],
[ -81.269951, 40.433486 ],
[ -81.264744, 40.565042 ],
[ -81.321659, 40.566648 ],
[ -81.317739, 40.651579 ],
[ -81.24125, 40.650534 ],
[ -81.237227, 40.723542 ],
[ -81.198599, 40.729172 ],
[ -81.087289, 40.727816 ],
[ -80.917172, 40.726934 ],
[ -80.918125, 40.643464 ],
[ -80.860822, 40.64257 ],
[ -80.861994, 40.599404 ]
]]}

И вот мой запрос JavaScript, который я использую в оболочке Mongo:

db.MapPoints.find({ "GeoPoint.coordinates": { $geoIntersects: { $geometry: region.GeoJson.geometry } } })

спросил(а) 2021-01-25T17:04:44+03:00 4 месяца, 2 недели назад
1
Решение
63

Я создал быструю модификацию тестового класса драйвера Mongo, чтобы получить объект, который мне нужен для продвижения вперед. Я не уверен, что это будет работать для всех моих полигонов, но оно преодолевает текущую проблему. Если у кого-то есть лучший способ сделать это, пожалуйста, поделитесь. Благодарю!

    private GeoJsonPolygon<GeoJson2DCoordinates> GetMongoPolygon(string json)
{
return BsonSerializer.Deserialize<GeoJsonPolygon<GeoJson2DCoordinates>>(json);
}

ответил(а) 2021-01-25T17:04:44+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема