【问题标题】:SQL Spatial / Issue With Incorrect Or Inconsistent Polygon DataSQL 空间/多边形数据不正确或不一致的问题
【发布时间】: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


    【解决方案1】:

    已回答:删除了内界括号并解决了问题。

    【讨论】:

      猜你喜欢
      • 2018-08-25
      • 2018-02-19
      • 2020-01-16
      • 1970-01-01
      • 2020-01-29
      • 2019-11-12
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      相关资源
      最近更新 更多