USE [xxx_Data];
GO
/****** Object: StoredProcedure [dbo].[GPSTransToAMap] Script Date: 2021/1/26 9:31:02 ******/
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
-- =============================================
-- Author: <Zbguan>
-- Create date: <2021年1月23日22:31:49 >
-- Description: <GPS坐标转Amap>
-- =============================================
ALTER PROCEDURE [dbo].[GPSTransToAMap]
-- Add the parameters for the stored procedure here
@wgLon FLOAT,
@wgLat FLOAT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
---判断是否在中国境内 国外无需转换
DECLARE @isChina INT;
IF (@wgLon < 72.004 OR @wgLon > 137.8347)
BEGIN
SET @isChina = 1;
END;
ELSE
BEGIN
SET @isChina = 0;
SELECT @wgLon,
@wgLat;
END;
IF (@wgLat < 0.8293 OR @wgLat > 55.8271)
BEGIN
SET @isChina = 1;
END;
ELSE
BEGIN
SET @isChina = 0;
SELECT @wgLon,
@wgLat;
END;
-------------------------------------
DECLARE @pi FLOAT = 3.14159265358979324;
DECLARE @a FLOAT = 6378245.0;
DECLARE @ee FLOAT = 0.00669342162296594323;
DECLARE @dLat FLOAT = dbo.f_transformLat(@wgLon - 105.0, @wgLat - 35.0);
DECLARE @dLon FLOAT = dbo.f_transformLon(@wgLon - 105.0, @wgLat - 35.0);
DECLARE @radLat FLOAT = @wgLat / 180.0 * @pi;
DECLARE @magic FLOAT = SIN(@radLat);
SET @magic = 1 - @ee * @magic * @magic;
DECLARE @sqrtMagic FLOAT = SQRT(@magic);
SET @dLat = (@dLat * 180.0) / ((@a * (1 - @ee)) / (@magic * @sqrtMagic) * @pi);
SET @dLon = (@dLon * 180.0) / (@a / @sqrtMagic * COS(@radLat) * @pi);
SELECT @wgLon + @dLon,
@wgLat + @dLat;
END;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




