问题标签 [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.
c# - 具有 WellKnownText 空间数据列的 SqlBulkCopy DataTable
我正在尝试批量复制DataTable
具有以下列的 a:
- “ID” -
System.Int32
- “几何” -
System.String
进入具有以下列的 SQL 数据库:
- “ID” -
int
- “形状” -
geometry
任何人都可以建议最好的方法吗?
一些测试代码是否有帮助...
我的原始帖子未能解释执行上述操作会导致引发以下异常。
InvalidOperationException:来自数据源的 String 类型的给定值无法转换为指定目标列的 udt 类型。
我假设SqlBulkCopy
不知道geometry
列类型,因此不知道如何从string
. 谁能证实这一点?
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。
除其他外,两个程序集都公开了一个SqlGeometryBuilder
type。两个程序集版本之间的一个显着区别是 2012 类型有一个额外的重载方法AddCircularArc
,而 2008 类型没有。
由于并行引用两个程序集并不是一件容易的事(也许是个坏主意),我想知道我是否可以只使用 2012 版本——即使是针对 SQL Server 2008 实例,只要我不使用AddCircularArc
.
如果他们尝试过,任何人都可以分享他们的经验吗?
mysql - 使用 MySQL 几何函数时出现 SQL 错误
我收到以下错误:
该语句已终止。
在执行用户定义的例程或聚合“几何”期间发生 .NET Framework 错误:
System.FormatException:24141:输入的位置 13 处应有一个数字。输入有@data1。
c# - 在 SqlGeometry 和 DbGeometry 之间转换
有没有一种简单的方法可以在 SqlGeometry 和 DbGeometry 之间进行转换?我正在使用一个流行的 sql 空间助手库,其中的所有函数都需要 SqlGeometry。但是,当我针对 ESRI ArcSDE 要素类使用实体框架时,Shape 字段将作为 DbGeometry 返回。我无法使用该 DbGeometry 类型调用任何我想调用的方法(例如 LocateAlongGeom)。也许有一种方法可以将其序列化为二进制或文本,然后将其作为 SqlGeometry 读回?
sql-server - 如何在 SQL Server 2012 中使用 SqlGeometry 定义三角形
在 SQL Server 2012 中,多边形由一个外环和零个或一些内环组成。所以每个简单的多边形(矩形、正方形和...)都必须有一个外环并且
来自MSDN:
要使戒指可以接受,需要满足以下标准。
- LineString 实例必须被接受。
- LineString 实例必须至少有四个点。
- LineString 实例的起点和终点必须相同。
那么如果我想在 SQL Server 2012 中声明一个包含三个点的三角形呢?
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 向模型字段添加属性并让它记住它们之后再生)。那么这可以是部分类还是覆盖格式化程序?
谢谢,马特
geospatial - 将 SQL 地理转换为 SQL 几何或以其他方式提高查找速度
需要:我正在寻找一个 SQL 语句来将表的 SQL 地理字段的内容转换为 SQL 几何字段类型,我将添加到现有表中的新表字段。或者更好的解决方案,因此发布。
原因:我希望加快查找用户插入的地点附近的位置。位置当前存储在具有 Lat、Long 和 SQLGeography 字段类型的表中,空间索引基于。由于 Geometry 类型的计算比 Geography 类型的计算占用更少的资源,我可以承担准确性的损失以提高执行速度。我目前的计算仅限于美国,我没有看到跨越国际时间线或两极(也许在未来?...)
其他注意事项:
- 在我的情况下,查找不仅仅是距离,而是在某个区域(社区或城市)内。
- 我试图创建一个计算列,但无法使其持久化以建立索引。我听说这在 2012 年是可能的,但我正在使用 2008 R2。
环境:VS 2012、ASP.NET 4.0、Entity Framework 5(没有将新的地理字段正确映射到 C#,但没关系,因为它们只是在 SQL 端使用)。
问题:
- 这是否意味着我的空间索引(基于位置表的地理数据字段)不会被使用,因为我使用的是 STIntersects 而不是 STDistance?
- 我是否应该以某种方式从“STIntersects”修改为使用“STDistance”(我不知道每次的距离,因为它会根据区域大小而变化,例如可能是社区或城市)
我看过的好文章:
- http://msdn.microsoft.com/en-us/library/ff929109.aspx
- http://workshops.opengeo.org/postgis-intro/geography.html
SQL 查询的摘录:
c# - 我怎样才能得到sqlgeometry弧的中心点?
我有 Mssql 数据库我将一些几何图形存储在数据库中作为 sqlgeometry 我在使用 EF5 的 mvc4 项目中工作我有弧存储在数据库中我可以从数据库中获取它作为 dbgeometry 然后将其转换为 sqlgeometry 由于某些原因我想获得中心点这条弧线?是否有免费的几何 .net lib 可以为我计算?
这是我的示例代码,它从弧上的 3 点构建弧几何
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。但是,如果我向前一步,程序仍然会因此错误而崩溃。
为什么我的代码突然不愿意处理这行代码?
更新 我找到了一个“解决方案”,但仍然想了解这个问题,因为这很臭......
这有效。
reporting-services - 使用 SQLGeometry 在 SSRS 的平面图上显示项目位置
库存项目具有对应于物理仓库位置的位置字段,即项目 X 位置字段状态“A01”对应于货架位置 A01。
如何利用这些数据在仓库平面图上显示项目位置?
也许以 SSRS 报告查询的形式显示平面图上的项目 X 的位置?
我四处搜索,发现这是可以做到的:
“从最简单的案例开始,假设您想要一张公司仓库布局图(存储货物的物理仓库,而不是数据仓库)。您可能会测量仓库,绘制平面图,并根据货物在平面图中的位置绘制货物的位置。”
但我找不到如何实现这一目标的步骤。在这方面的任何帮助表示赞赏。
目前使用 SQL 2008 R2