基于位于给定多边形内的点将多边形表连接到点表时出错

k1234

我试图实现的总体目标是基于一个表的一个点(以英尺为单位的xy坐标创建)将两个表连接在一起,该点位于另一个表的多边形内。给出了预期的结果记录及其所属的多边形的名称。执行查询时,将汇总返回以下错误:

用户定义的例程或聚合“几何”的执行过程中发生了.NET Framework错误:System.FormatException:24114:输入的已知文本(WKT)中的标签395无效。

由于不熟悉SQL中的几何数据,因此我无法完全确定自己是否走在正确的道路上,因此不胜感激。

我尝试连接的面表是一个临时表,面的格式设置为几何。通过创建空间输出,按预期方式独立运行以下代码。

抱歉,手机上的代码格式无效,并且我的工作计算机的浏览器不受支持。

DECLARE @Hex1 TABLE    (PolyGeom geometry, Hex varchar(6))                 

INSERT INTO @Hex1 
  Values
  (geometry::STPolyFromText('Polygon((7598795.05553838 734372.656,7598217.70526919 735372.656,7597063.00473081 735372.656,7596485.65446162 734372.656,7597063.00473081 733372.656,7598217.70526919 733372.656,7598795.05553838 734372.656))',0),1),
(geometry::STPolyFromText('Polygon((7602259.15715352 734372.656,7601681.80688433 735372.656,7600527.10634595 735372.656,7599949.75607676 734372.656,7600527.10634595 733372.656,7601681.80688433 733372.656,7602259.15715352 734372.656))',0),2),
(geometry::STPolyFromText('Polygon((7605723.25876865 734372.656,7605145.90849947 735372.656,7603991.20796109 735372.656,7603413.8576919 734372.656,7603991.20796109 733372.656,7605145.90849947 733372.656,7605723.25876865 734372.656))',0),3)’’’

多边形表连接到的表没有点,因此创建了一个表,该表具有包含计算出的点的字段。通过返回带点的记录,按预期运行隔离的代码。

INSERT INTO #Points (Primary_Key, geom)
select a.rID, geometry::STGeomFromText('POINT('+convert(varchar(20),a.x_coordinate)+' '+convert(varchar(20),a.y_coordinate)+')',0) as geom
from data_a a'''

这些表如下所示连接

 WITH CTE1 AS --Due the number of polygons exceeding insert limits, multiple tables are created and unioned in a CTE

  ( Select*
  From @Hex1

  UNION ALL
  Select*
  From @Hex2

   UNION ALL
  Select*
  From @Hex3

   UNION ALL
  Select*
  From @Hex4)

select a.rID, C.Hex
from data_a a --Existing table with x y coordinates

left join #points p  --Joins the point created in points table to the same case in go_data
on a.rID = p.Primary_key

left join CTE1 C   --Joins the hexagon to the point if hex containts the point
on p.geom.STIntersects (c.hex) =1'''

以下是完整的代码,其中每张表中的多边形数量已减少

IF OBJECT_ID('tempdb..#Points') IS NOT NULL DROP TABLE #Points

create table #Points (Primary_key numeric identity not null,  geom  geometry)
SET IDENTITY_INSERT #Points ON


INSERT INTO #Points (Primary_Key, geom)
select g.rin, geometry::STGeomFromText('POINT('+convert(varchar(20),a.x_coordinate)+' '+convert(varchar(20),a.y_coordinate)+')',0) as geom
from data_a a
;

DECLARE @Hex1 TABLE 
   (PolyGeom geometry, Hex varchar(6))                 

INSERT INTO @Hex1 
  Values
  (geometry::STPolyFromText('Polygon((7598795.05553838 734372.656,7598217.70526919 735372.656,7597063.00473081 735372.656,7596485.65446162 734372.656,7597063.00473081 733372.656,7598217.70526919 733372.656,7598795.05553838 734372.656))',0),1),
(geometry::STPolyFromText('Polygon((7602259.15715352 734372.656,7601681.80688433 735372.656,7600527.10634595 735372.656,7599949.75607676 734372.656,7600527.10634595 733372.656,7601681.80688433 733372.656,7602259.15715352 734372.656))',0),2),
(geometry::STPolyFromText('Polygon((7605723.25876865 734372.656,7605145.90849947 735372.656,7603991.20796109 735372.656,7603413.8576919 734372.656,7603991.20796109 733372.656,7605145.90849947 733372.656,7605723.25876865 734372.656))',0),3)

DECLARE @Hex2 TABLE   
(PolyGeom geometry, Hex varchar(6))  

INSERT INTO @Hex2 
  Values

  (geometry::STPolyFromText('Polygon((7680201.44349411 721372.656,7679624.09322492 722372.656,7678469.39268654 722372.656,7677892.04241735 721372.656,7678469.39268654 720372.656,7679624.09322492 720372.656,7680201.44349411 721372.656))',0),1000),
(geometry::STPolyFromText('Polygon((7683665.54510925 721372.656,7683088.19484006 722372.656,7681933.49430168 722372.656,7681356.14403249 721372.656,7681933.49430168 720372.656,7683088.19484006 720372.656,7683665.54510925 721372.656))',0),1001),
(geometry::STPolyFromText('Polygon((7687129.64672438 721372.656,7686552.29645519 722372.656,7685397.59591681 722372.656,7684820.24564763 721372.656,7685397.59591681 720372.656,7686552.29645519 720372.656,7687129.64672438 721372.656))',0),1002)

DECLARE @Hex3 TABLE 
 (PolyGeom geometry, Hex varchar(6))  

INSERT INTO @Hex3 
  Values
  (geometry::STPolyFromText('Polygon((7765071.93306498 708372.656,7764494.58279579 709372.656,7763339.88225741 709372.656,7762762.53198822 708372.656,7763339.88225741 707372.656,7764494.58279579 707372.656,7765071.93306498 708372.656))',0),1999),
(geometry::STPolyFromText('Polygon((7768536.03468011 708372.656,7767958.68441092 709372.656,7766803.98387254 709372.656,7766226.63360335 708372.656,7766803.98387254 707372.656,7767958.68441092 707372.656,7768536.03468011 708372.656))',0),2000),
(geometry::STPolyFromText('Polygon((7772000.13629525 708372.656,7771422.78602606 709372.656,7770268.08548768 709372.656,7769690.73521849 708372.656,7770268.08548768 707372.656,7771422.78602606 707372.656,7772000.13629525 708372.656))',0),2001)

WITH CTE1 AS 
  ( Select*
  From @Hex1

  UNION ALL
  Select*
  From @Hex2

   UNION ALL
  Select*
  From @Hex3)

select a.rID, C.Hex
from  data_a a

left join #points p  --Joins the point created in points table to the same case in go_data
on g.rin = p.Primary_key

left join CTE1 C   --Joins the hexagon to the point if hex containts the point
on p.geom.STIntersects (c.hex) =1
lptr

不只是错字吗?您应将点几何与多边形的几何而不是十六进制列相交。

left join CTE1 C   --Joins the hexagon to the point if hex containts the point
on p.geom.STIntersects (c.PolyGeom) =1 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多边形面积到点

来自分类Dev

如何连接多边形?

来自分类Dev

尝试向表中添加几何图形(多边形z)时出错

来自分类Dev

点在多边形内

来自分类Dev

在给定多边形坐标的情况下找到点属于哪个多边形的算法

来自分类Dev

最佳实践,以检测点是否在2D多边形内(多边形的顶点在表上)

来自分类Dev

给定射线和多边形,计算多边形内的最大圆,其中中心位于射线上,端点位于圆上

来自分类Dev

将点连接到平面/绘制多边形

来自分类Dev

圆角多边形

来自分类Dev

多边形图

来自分类Dev

滚动多边形

来自分类Dev

圆角多边形

来自分类Dev

标记多边形

来自分类Dev

多边形遏制

来自分类Dev

在给定的地理多边形内计算$ avg值

来自分类Dev

在给定的地理多边形内计算$ avg值

来自分类Dev

查找给定点最近的多边形

来自分类Dev

多边形算法中的点,当测试点位于多边形边缘时返回true

来自分类Dev

连接点网络中的多边形

来自分类Dev

给定一组坐标点,删除内部点(或找到点的外环)以形成多边形

来自分类Dev

查询融合表以查看多边形是否包含坐标

来自分类Dev

点属性表中的多边形名称

来自分类Dev

GMap-无法检测到点击多边形

来自分类Dev

如何在基于多边形的表中创建空间约束?

来自分类Dev

凸多边形内的区域

来自分类Dev

VBO内的OpenGL分隔多边形

来自分类Dev

多边形内的检查点

来自分类Dev

传单内多边形显示的挑战

来自分类Dev

多边形内的KineticJS dragBound