sql serverにはgeographyというカラムがいつの間にできてます。
これを利用すると特定位置から近い順にデータが読み込めます。
DECLARE @InputLatitude FLOAT = 40.7128;
DECLARE @InputLongitude FLOAT = -74.0060;
SELECT TOP 50 *
FROM YourTableName
ORDER BY geographyColumn.STDistance(geography::Point(@InputLatitude, @InputLongitude, 4326)) ASC;
もしあなたから近いユーザーのリストが欲しい場合このようにクエリを書けばオッケーです。
しかしフィールドは?
create table tUser(
uSn bigint identity(1, 1),
uUid nvarchar(200),
uLoc geography,
uLocText nvarchar(200)
)
このようにテーブルを作りました。位置情報はuLocTextに入れ、uLocにはgeography値を入れます。
declare @uLocText nvarchar(200), @uSn bigint
set @uLocText = '40.7128, -74.0060'
set @uSn = 1
UPDATE tUser
SET uLoc= geography::Point(CAST(SUBSTRING(@uLocText, 1, CHARINDEX(',', @uLocText) - 1) AS FLOAT),
CAST(SUBSTRING(@uLocText, CHARINDEX(',', @uLocText) + 1, LEN(@uLocText)) AS FLOAT),
4326)
, uLocText = @uLocText
where uSn = @uSnこ
このように計算して入れたらuLocにはバイナリーコードのように入って目視では分かりづらいですが、uLocTextにちゃんとGoogle mapの位置情報が入ってますので後でそのデータも使えると思います。
giip :: Control all Robots and Devices! Free inter-RPA orchestration tool! https://giipasp.azurewebsites.net/
コメント
コメントを投稿