Была задача - вытащить данные по гео-запросу из монги, а потом сделать по ним гео-поиск в SQL Server
Так странно, потому что "микросервисы"
Код был написан, локально на винде работал - а в проде обосрамс. Оказалось Linux не умеет работать с
Microsoft.SqlServer.Types.SqlGeometryНе помогало ничего, даже мок-пакет от dotMorten. Проблема слишком низкоуровневая и зашита dll биндинги клиентской библиотеки.
Но по сути, мне надо было вжухнуть в запрос wkt строку, из которой СУБД собрала объект геометрии сама.
wkt - Well Known Text, что-то вроде JSON для геоданных: точки, полигоны, дырки и так далее. Почитайте на досуге
Решил проблему можно сказать через ООП - нашёл библиотеку Geo.
Дальше собрал объект геометрии и сериализовал. Почти вот так:
var settings = new WktWriterSettings {
LinearRing = false;
Triangle = false;
DimensionFlag = true;
NullOrdinate = Coordinate.NullOrdinate.ToString(CultureInfo.InvariantCulture);
MaxDimesions = 4;
};
var writer = new WktWriter(settings); // Pass the settings object into the writer's constructor
var pointString = writer.Write(new Point(68.389, 73.89));Дальше пульнул строку в запрос и отвязался от OS зависимостей.
Больше таких постов найдёте в ШарпиZме 📱