2016-06-01 6 views
-2

SQL Serverカーのゾーン内の経度緯度をチェックするかどうかを教えてください。GoogleゾーンチェックSQLクエリレベルSQL Server

経度

1 12426 1100 32.231389663 72.246093750 31.765537409 71.455078125 rectangle 

下のゾーン車の経度緯度

12426 31.966143862 71.806640625 

enter image description here

+1

これはちょうど、X1> = X> = x2の&& Y1> = Y> = Y2チェックしませんか? –

+1

ここから始めましょう。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

答えて

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 
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 
+0

ありがとう、私はあなたにチェックし、答えますよ:) –

+0

このクエリはありません9 –

+0

ゾーン内のすべてのデータ車を返す –