Sql STINTIN或STContains是否可以用于基于多边形内点关系更新列?
鉴于下表:Sql STINTIN或STContains是否可以用于基于多边形内点关系更新列?,sql,sql-server-2008,spatial,Sql,Sql Server 2008,Spatial,鉴于下表: CREATE TABLE #USGS_24K_TOPOMAP_BOUNDARIES( [OBJECTID] [int] NOT NULL, [AREA] [numeric](38, 8) NULL, [PERIMETER] [numeric](38, 8) NULL, [QD24K_GRSM] [numeric](38, 8) NULL, [QD24K_GR_1] [numeric](38, 8) NULL, [QUADID] [num
CREATE TABLE #USGS_24K_TOPOMAP_BOUNDARIES(
[OBJECTID] [int] NOT NULL,
[AREA] [numeric](38, 8) NULL,
[PERIMETER] [numeric](38, 8) NULL,
[QD24K_GRSM] [numeric](38, 8) NULL,
[QD24K_GR_1] [numeric](38, 8) NULL,
[QUADID] [numeric](38, 8) NULL,
[CENTLAT] [numeric](38, 8) NULL,
[CENTLONG] [numeric](38, 8) NULL,
[NAME] [nvarchar](35) NULL,
[STATE] [nvarchar](2) NULL,
[LATLONG] [nvarchar](9) NULL,
[OHIO_INDEX] [nvarchar](8) NULL,
[GRID60] [nvarchar](5) NULL,
[Reviewed] [int] NULL,
[Corrected] [int] NULL,
[Verified] [int] NULL,
[GlobalID] [uniqueidentifier] NOT NULL,
[SHAPE] [geometry] NULL)
及
我想在#tbl_locations.Topo_Name中填充#USGS_24K_TOPOMAP_bounders.Name。换句话说,我试图确定一个点所属的地形图的名称,并通过编程将其写入points表。理论上似乎很简单,但tbl_位置包含数千个点,这些点可能出现在36个地形图多边形边界之一
我已经走了这么远
Select NAME, Loc_Name, Location_ID
From #USGS_24K_TOPOMAP_BOUNDARIES a, #TBL_LOCATIONS b
where a.Shape.STContains(b.Shape)=1
它返回一个整洁的表,我可以通过连接跨行返回tbl_位置,但我一直坚持通过一个查询更新语句来实现这一点,并且我有许多类似的点多边形关系,我希望通过这种方式实现自动化(例如,点出现在哪个流域、县、州等)。谢谢 我想知道是否应该将其输出到一个视图,然后使用该视图执行联合?谢谢
Select NAME, Loc_Name, Location_ID
From #USGS_24K_TOPOMAP_BOUNDARIES a, #TBL_LOCATIONS b
where a.Shape.STContains(b.Shape)=1
update TBL_LOCATIONS
set TOPO_NAME = dbo.QD24K_GRSM.NAME
--(SELECT a.NAME, b.Loc_Name, b.Location_ID
FROM dbo.tbl_locations
inner join dbo.QD24K_GRSM
on TBL_LOCATIONS.Location_ID = TBL_LOCATIONS.Location_ID
WHERE (QD24K_GRSM.Shape.STContains(TBL_LOCATIONS.SHAPE) = 1) ;
UPDATE
tbl_locations
SET
tbl_locations.Topo_Name = t.Name
FROM
(SELECT Shape, Name FROM USGS_24K_TOPOMAP_BOUNDARIES) t
WHERE
t.Shape.STContains(tbl_locations.Shape) = 1