如何检查区域中SQL Server汽车中的经度纬度是否请帮助我。
区域经度
1 12426 1100 32.231389663 72.246093750 31.765537409 71.455078125 rectangle
汽车经度纬度
12426 31.966143862 71.806640625
答案 0 :(得分:1)
如果我理解您的问题,以下内容应该对您有用。我需要您提供数据的样本脚本,并且期望的结果是100%确定。
Select *, -- Returns values for alias F if a match is found or else nulls for F.
Case When F.ID Is Null
Then 'Not in a zone'
Else 'In a zone'
End InZoneIndicator
From checkGeoFence C
Left Join tblgeofencing F On C.Lat Between F.MinLatitude And F.MaxLatitude
And C.Long Between F.MinLongitude And F.MaxLongitude
答案 1 :(得分:0)
DECLARE @g geography,
@pIn geography,
@pOut geography
DECLARE @minY varchar(10) = N'32.15701248607007'
DECLARE @maxY varchar(10) = N'69.78515625 '
DECLARE @minX varchar(10) = N'30.921076375384878'
DECLARE @maxX varchar(10) = N'67.78564453125'
SET @g = geography::STPolyFromText('POLYGON((' + @minX + ' ' + @minY + ', ' +
@maxX + ' ' + @minY + ', ' +
@maxX + ' ' + @maxY + ', ' +
@minX + ' ' + @maxY + ', ' +
@minX + ' ' + @minY + '))', 4326);
SET @pIn = geography::STPointFromText('POINT(33.486435450999885 65.69677734375)',4326)
SET @pOut = geography::STPointFromText('POINT( 31.690781806136822 71.0595703125 )',4326)
SELECT Poly = @g,
pIn = @pIn,
pOut = @pOut
SELECT DistanceInMetersIn = @g.STDistance( @pIn ),
DistanceInMetersOut = @g.STDistance( @pOut ),
STIntersectsIn = @g.STIntersects( @pIn ),
STIntersectsOut = @g.STIntersects( @pOut )
SELECT STIntersectionIn = @g.STIntersection( @pIn ).ToString(),
STIntersectionOut = @g.STIntersection( @pOut ).ToString()
GO