Я использую тип данных geography для расчета кратчайшего расстояния.
CREATE TABLE Landmark (
Id int,
Latitude FLOAT,
Longitude FLOAT
)
INSERT Landmark VALUES
(1, 49.242458, -123.153465),
(2, 49.249381, -122.866683)
WITH GeographyLandmark AS
(
SELECT Id, geography::STPointFromText('POINT(' + CAST(Latitude AS VARCHAR(20)) + ' ' + CAST(Longitude AS VARCHAR(20)) + ')', 4326) Location
FROM Landmark
)
--this query calculates distance between point and localizations in meters
SELECT Id, geography::STPointFromText('POINT(' + CAST(49.2424566 AS VARCHAR(20)) + ' ' + CAST(-123.1534623 AS VARCHAR(20)) + ')', 4326).STDistance(Location) Distance
FROM GeographyLandmark
Но я получаю эту ошибку:
Произошла ошибка .NET Framework во время выполнения пользовательской подпрограммы или совокупной "географии": System.FormatException: 24201: значения широты должны быть от -90 до 90 градусов.System.FormatException: в Microsoft.SqlServer.Types.GeographyValidator.ValidatePoint (Double x, Double y, Nullable 1 z, Nullable
1 м) в Microsoft.SqlServer.Types.Validator.BeginFigure (Double x, Double y, Nullable 1 z, Nullable
1m) в Microsoft.SqlServer.Types.ForwardingGeoDataSink.BeginFigure (Double x, Double y, Nullable 1 z, Nullable
1 m) в Microsoft.SqlServer.Types.CoordinateReversingGeoDataSink.BeginFigure (Double x, Double y, Nullable * 1011)в Microsoft.SqlServer.Types.WellKnownTextReader.ParsePointText (Boolean parseParentheses) в Microsoft.SqlServer.Types.WellKnownTextReader.ParseTaggedText (тип OpenGisType.Types.SqlGeography.ParseText (тип OpenGisType, SqlChars taggedText, Int32 srid) в Microsoft.SqlServer.Types.SqlGeography.GeographyFromText (тип OpenGisType, SqlChars * * * 101 *
1012 * 1012), сетка Int32.проблема здесь?