问题标签 [sqlgeometry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5662 浏览

c# - 具有 WellKnownText 空间数据列的 SqlBulkCopy DataTable

我正在尝试批量复制DataTable具有以下列的 a:

  • “ID” -System.Int32
  • “几何” -System.String

进入具有以下列的 SQL 数据库:

  • “ID” -int
  • “形状” -geometry

任何人都可以建议最好的方法吗?

一些测试代码是否有帮助...


我的原始帖子未能解释执行上述操作会导致引发以下异常。

InvalidOperationException:来自数据源的 String 类型的给定值无法转换为指定目标列的 udt 类型。

我假设SqlBulkCopy不知道geometry列类型,因此不知道如何从string. 谁能证实这一点?

0 投票
2 回答
9364 浏览

sql-server-2008 - Microsoft.SqlServer.Types 的几何 UDT 的 SQL Server 2012 版本是否向后兼容 SQL Server 2008?

如果我在本地安装了 SQL Server 2008 和 SQL Server 2012,我会自己尝试一下;但是我只安装了较新的版本,并希望保持这种状态。

  • SQL Server 2008 附带一个程序集Microsoft.SqlServer.Types.dll,主要版本 10。
  • SQL Server 2012 附带一个程序集Microsoft.SqlServer.Types.dll,主要版本 11。

除其他外,两个程序集都公开了一个SqlGeometryBuildertype。两个程序集版本之间的一个显着区别是 2012 类型有一个额外的重载方法AddCircularArc,而 2008 类型没有。

由于并行引用两个程序集并不是一件容易的事(也许是个坏主意),我想知道我是否可以只使用 2012 版本——即使是针对 SQL Server 2008 实例,只要我不使用AddCircularArc.

如果他们尝试过,任何人都可以分享他们的经验吗?

0 投票
1 回答
979 浏览

mysql - 使用 MySQL 几何函数时出现 SQL 错误

我收到以下错误:

该语句已终止。
在执行用户定义的例程或聚合“几何”期间发生 .NET Framework 错误:
System.FormatException:24141:输入的位置 13 处应有一个数字。输入有@data1。

0 投票
3 回答
4317 浏览

c# - 在 SqlGeometry 和 DbGeometry 之间转换

有没有一种简单的方法可以在 SqlGeometry 和 DbGeometry 之间进行转换?我正在使用一个流行的 sql 空间助手库,其中的所有函数都需要 SqlGeometry。但是,当我针对 ESRI ArcSDE 要素类使用实体框架时,Shape 字段将作为 DbGeometry 返回。我无法使用该 DbGeometry 类型调用任何我想调用的方法(例如 LocateAlongGeom)。也许有一种方法可以将其序列化为二进制或文本,然后将其作为 SqlGeometry 读回?

0 投票
1 回答
554 浏览

sql-server - 如何在 SQL Server 2012 中使用 SqlGeometry 定义三角形

在 SQL Server 2012 中,多边形由一个外环和零个或一些内环组成。所以每个简单的多边形(矩形、正方形和...)都必须有一个外环并且

来自MSDN

要使戒指可以接受,需要满足以下标准。

  • LineString 实例必须被接受。
  • LineString 实例必须至少有四个点。
  • LineString 实例的起点和终点必须相同。

那么如果我想在 SQL Server 2012 中声明一个包含三个点的三角形呢?

0 投票
1 回答
1812 浏览

entity-framework - 如何控制 System.Data.Spatial.DbGeometry 的 JSON.NET 序列化

我有一个 DB First Entity Framework 5 数据访问层,它映射到一个包含名为 CenterCoordinate 的 SQL 几何类型字段的表。生成的实体包含以下内容:

公共 System.Data.Spatial.DbGeometry CenterCoordinate { 获取;放; }

我的客户端 javascript 请求 API 并且只接受 JSON。然后,我使用默认格式化程序 (JSON.NET) 使用 Asp.net Web API 来提供服务。在 API 控制器中,该字段具有一长串属性,包括 XCoordinate 和 YCoordinate。

在客户端中,JSON 仅包含以下内容:

几何:对象 CoordinateSystemId:3498 WellKnownBinary:空 WellKnownText:“POINT (6438089.715 1801515.828)”

我真的不想解析 WellKnownText 来获得 X 和 Y 的值。

所以问题是如何控制 System.Data.Spatial 类型与 JSON 的序列化/反序列化,以便获得更有用的东西?JSON.net 格式化程序如何知道要包含/排除什么?

注意:我真的不想用属性装饰实体,因为每次我从数据库重新生成模型时这些都会丢失(我不知道为什么我们不能通过 VS2012 向模型字段添加属性并让它记住它们之后再生)。那么这可以是部分类还是覆盖格式化程序?

谢谢,马特

0 投票
1 回答
1917 浏览

geospatial - 将 SQL 地理转换为 SQL 几何或以其他方式提高查找速度

需要:我正在寻找一个 SQL 语句来将表的 SQL 地理字段的内容转换为 SQL 几何字段类型,我将添加到现有表中的新表字段。或者更好的解决方案,因此发布。

原因:我希望加快查找用户插入的地点附近的位置。位置当前存储在具有 Lat、Long 和 SQLGeography 字段类型的表中,空间索引基于。由于 Geometry 类型的计算比 Geography 类型的计算占用更少的资源,我可以承担准确性的损失以提高执行速度。我目前的计算仅限于美国,我没有看到跨越国际时间线或两极(也许在未来?...)

其他注意事项:

  1. 在我的情况下,查找不仅仅是距离,而是在某个区域(社区或城市)内。
  2. 我试图创建一个计算列,但无法使其持久化以建立索引。我听说这在 2012 年是可能的,但我正在使用 2008 R2。

环境:VS 2012、ASP.NET 4.0、Entity Framework 5(没有将新的地理字段正确映射到 C#,但没关系,因为它们只是在 SQL 端使用)。

问题:

  1. 这是否意味着我的空间索引(基于位置表的地理数据字段)不会被使用,因为我使用的是 STIntersects 而不是 STDistance?
  2. 我是否应该以某种方式从“STIntersects”修改为使用“STDistance”(我不知道每次的距离,因为它会根据区域大小而变化,例如可能是社区或城市)

我看过的好文章:

  1. http://msdn.microsoft.com/en-us/library/ff929109.aspx
  2. http://workshops.opengeo.org/postgis-intro/geography.html

SQL 查询的摘录:

0 投票
1 回答
512 浏览

c# - 我怎样才能得到sqlgeometry弧的中心点?

我有 Mssql 数据库我将一些几何图形存储在数据库中作为 sqlgeometry 我在使用 EF5 的 mvc4 项目中工作我有弧存储在数据库中我可以从数据库中获取它作为 dbgeometry 然后将其转换为 sqlgeometry 由于某些原因我想获得中心点这条弧线?是否有免费的几何 .net lib 可以为我计算?

这是我的示例代码,它从弧上的 3 点构建弧几何

0 投票
0 回答
1158 浏览

c# - 有效的 SQLGeometry 对象在其上运行 STNumGeometry() 时导致“无效”异常

我正在使用一个包含几何列的 SQL Server 2008 数据库,我现在在 CSharp 中加载和操作该数据时遇到了问题,而以前没有问题。

我有一个 Microsoft.SqlServer.Types.SqlGeometry 类型的对象,我需要获取 STNumGeometry 即:

但这会导致错误:

ArgumentException 24144:此操作无法完成,因为实例无效。使用 MakeValid 将实例转换为有效实例。请注意,MakeValid 可能会导致几何实例的点稍微移动。

我检查了 SQLServer 和 STIValid 中的 Geometry 值,那里报告是有效的。(不足为奇,因为该代码以前有效)。

根据 CSharp 和 SQLServer 中的 STIValid,几何图形是有效的,并且 STNumGeometries 在数据库中工作,如果我在那里放置断点,则 STNumGeometries 的值在手表中报告为 1。但是,如果我向前一步,程序仍然会因此错误而崩溃。

为什么我的代码突然不愿意处理这行代码?

更新 我找到了一个“解决方案”,但仍然想了解这个问题,因为这很臭......

这有效。

0 投票
1 回答
319 浏览

reporting-services - 使用 SQLGeometry 在 SSRS 的平面图上显示项目位置

库存项目具有对应于物理仓库位置的位置字段,即项目 X 位置字段状态“A01”对应于货架位置 A01。
如何利用这些数据在仓库平面图上显示项目位置?
也许以 SSRS 报告查询的形式显示平面图上的项目 X 的​​位置?
我四处搜索,发现这是可以做到的

“从最简单的案例开始,假设您想要一张公司仓库布局图(存储货物的物理仓库,而不是数据仓库)。您可能会测量仓库,绘制平面图,并根据货物在平面图中的位置绘制货物的位置。”

但我找不到如何实现这一目标的步骤。在这方面的任何帮助表示赞赏。

目前使用 SQL 2008 R2