Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql STINTIN或STContains是否可以用于基于多边形内点关系更新列?_Sql_Sql Server 2008_Spatial - Fatal编程技术网

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