【发布时间】:2021-11-30 14:34:00
【问题描述】:
我正在为一家保险公司实施多边形累积流程。我正在将 GeoJSON 数据导入 SQL 并转换成一个表,以后可以链接到一系列纬度/经度点。
我在处理多边形数据时遇到了很多麻烦。 SQL Server 告诉我我的多边形无效,但到目前为止我还没有看到明显的问题。这是原始多边形源: https://hub.arcgis.com/datasets/esri::usa-counties/explore?location=36.587667%2C-96.452016%2C4.81
这是一个示例多边形和 SQL 代码,用于将其从 WKT(它可能无效)转换为 SQL 空间地理对象
select Geography::STGeomFromText(
'MULTIPOLYGON (((-84.976413007999952 29.721111997000037), (-84.976519975999963 29.721016060000068), (-84.976666054999953 29.721056006000026), (-84.976939993999963 29.721130048000077), (-84.977004007999938 29.721208937000029), (-84.977324076999935 29.721559927000044), (-84.977269923999984 29.722414001000061), (-84.977025066999943 29.723020043000076), (-84.976738926999985 29.723191025000062), (-84.976370053999972 29.723202056000048), (-84.975935996999965 29.722776022000062), (-84.97589605099995 29.72236302400006), (-84.97570701799998 29.722185022000076), (-84.975701000999948 29.722102957000061), (-84.975679941999942 29.721772025000064), (-84.976135057999954 29.72136303800005), (-84.976413007999952 29.721111997000037)))'
, 4326)
我收到此错误:
消息 6522,第 16 级,状态 1,第 1 行
在执行用户定义的例程或聚合“地理”期间发生 .NET Framework 错误:
System.FormatException:24305:多边形输入无效,因为环号 1 没有足够的点。多边形的每个环必须至少包含四个点。
好的,所以它认为我没有足够的积分。但乍一看,我有很多,而且根据 WKT 的要求,除了起点和终点之外,它们看起来并没有重复。一种想法是,这当然不是一个多多边形,而是一个普通多边形。
我在代码中试过了:
select Geography::STGeomFromText(
'POLYGON (((-84.976413007999952 29.721111997000037), (-84.976519975999963 29.721016060000068), (-84.976666054999953 29.721056006000026), (-84.976939993999963 29.721130048000077), (-84.977004007999938 29.721208937000029), (-84.977324076999935 29.721559927000044), (-84.977269923999984 29.722414001000061), (-84.977025066999943 29.723020043000076), (-84.976738926999985 29.723191025000062), (-84.976370053999972 29.723202056000048), (-84.975935996999965 29.722776022000062), (-84.97589605099995 29.72236302400006), (-84.97570701799998 29.722185022000076), (-84.975701000999948 29.722102957000061), (-84.975679941999942 29.721772025000064), (-84.976135057999954 29.72136303800005), (-84.976413007999952 29.721111997000037)))'
, 4326)
我收到此错误:
消息 6522,第 16 级,状态 1,第 1 行
在执行用户定义的例程或聚合“地理”期间发生 .NET Framework 错误:
System.FormatException:24141:输入的位置 30 处应有一个数字。输入有 (-84.976413007999952.
我在这里没有看到明显的问题。第一个坐标是 (-84.976413007999952 29.721111997000037) 所以它可能在 X 和 Y 之间的空间上绊倒了?还是坐标精度太高?
另外,我意识到 POLYGON 的语法使用两个括号而不是三个。但如果我使用该语法,我会再次看到第一个错误。
感觉好像我遗漏了一些明显的东西,但我过去曾使用大量 SQL 空间对象,并且以前没有遇到过这么多麻烦。欢迎任何/所有想法,谢谢!
【问题讨论】:
标签: sql spatial geography sqlgeography