I have two tables one having longitude and latitude points (2 columns) and other having gps coordinates which define a rectangular polygon (8 columns , 4 GPS co-ordinate , 2 point each)
Here is TABLE A
zip state city lat lng
35004 AL Acmar 33.584132 -86.515570
35005 AL Adamsville 33.588437 -86.959727
35006 AL Adger 33.434277 -87.167455
35007 AL Keystone 33.236868 -86.812861
35010 AL New Site 32.941445 -85.951086
35014 AL Alpine 33.331165 -86.208934
35016 AL Arab 34.328339 -86.489638
35019 AL Baileyton 34.268298 -86.621299
35020 AL Bessemer 33.409002 -86.947547
35023 AL Hueytown 33.414625 -86.999607
and TableB is as follows
locationID lt_Upleft lg_UpLeft lt_UpRight lg_UpRight lt_DownLeft lg_DownLeft lt_DownRight lg_DownRight
1 41.7127 -75.0059 41.7127 -73.0059 39.7127 -75.0059 39.7127 -75.0059
Now I want to get result form TableA Which falls inside 8 points of rectangular polygon. And Same way I want to get result of TableB which falls under longitude and latitude points.
I am new to google maps things. Not sure how I will get results. I have gone through some sample eg :
DECLARE @POLIGON geography;
SET @POLIGON = geography::STPolyFromText('POLYGON ((5 5, 10 5, 10 10, 5 5))', 4326);
DECLARE @LLTABLE TABLE
(
POINT_ID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED NOT NULL
,LAT FLOAT NULL
,LON FLOAT NULL
)
;WITH NN1(N) AS (SELECT NM.N FROM (VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) AS NM(N))
,NUMBERS(N) AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM NN1 N1,NN1 N2, NN1 N3
ORDER BY 1 OFFSET 0 ROWS FETCH FIRST (20) ROWS ONLY)
INSERT INTO @LLTABLE (LAT,LON)
SELECT
LATN.N AS LATITUDE
,LONN.N AS LONGITUDE
FROM NUMBERS LATN, NUMBERS LONN;
SELECT
LT.POINT_ID
,LT.LAT
,LT.LON
FROM @LLTABLE LT
WHERE geography::STPointFromText(CONCAT
(
'POINT('
,CAST(LT.LON AS VARCHAR(12))
,CHAR(32)
,CAST(LT.LAT AS VARCHAR(12))
,')'
), 4326).STWithin(@POLIGON) = 1
But don't how to use it.
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire