问题标签 [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# - 构建包含大量 GPS 数据的 GPS 轨迹时出现内存不足异常
我获取车辆的 GPS 点以建立其轨迹。
我用 C# 开发并使用 SqlGeography 类型(LineString)。我使用地理类型将其存储到 SQL Server 数据库中。
每个接收到的 GPS 点都使用 AddLine 方法添加,如下所示:
当大量 GPS 点(大约 825000 点)发生内存不足异常时,我感到很惊讶。这发生在行代码上:
我已将 SqlGeography 类型更改为 SqlGeometry 类型,结果是立即的,无一例外。
此外,我的跟踪有时无效,我必须使用 MakeValid 方法。当跟踪的 GPS 数据量增加时,执行此方法需要大量时间。
问题:
1)是否有另一种方法可以在现有跟踪中添加一个点?我们是否被迫在现有线的点上循环以便在添加新点之前使用 SqlGeographyBuilder 重建它?
2) 为什么使用 SqlGeometry 类型的结果是立即的,没有例外?原因是什么?与 ConstructedGeometry 方法相比,如何使用 ConstructedGeography 方法?如果找到,我想得到一个带有最终链接的简短解释?我在几个主题上看到 SqlGeometry 的限制比 SqlGeography 类型少,但相关的约束是什么?
3)在我的情况下,我应该注意什么来避免使用 MakeValid 方法来构建有效的线串?我认为与具有环形方向的多边形相比。
4) 为什么使用 SqlGeographyBuilder 的 AddLine 方法合并 3 个有效的线串会给我一个无效的线串?如果我使用 MakeValid 方法,我将获得一个包含 130772 个点的对象,而 3 个线串中的每一个都包含 1000 个点。为什么我没有得到一个 3000 分的对象?为什么尺寸会增加?
sql-server - 从 T-SQL 中同一表中的许多要素的点创建地理折线
这里也问了一个类似的问题:
我有一个看起来像这样的表模式:
示例数据如下所示:
如何使用 TSQL 将这些点转换为每个 SensorID的地理折线(以便每个 SensorID 都有一个 SensorID/Polyline 记录)?
php - PDO 中的 ST_GeomFromText 返回错误 (php)
我目前正在为我的 android 应用程序编写后端服务,因为这不是我的专长,所以我很困惑为什么会出现这个错误。
目的是将位置坐标列表从我的应用程序保存到我的数据库中的几何数据中。起初,我只是简单地使用 mysql_query 与我的数据库进行通信,但后来我了解了“sql 注入”,所以我将所有代码都转换为使用 PDO。
这是我的 mysql_query 代码:
至此,我成功发送并获取并显示了我发送的路由。但是当我将其更改为 PDO 样式时,一切正常,除了在此查询中我收到“http 错误 500”。
这是我的 PDO 样式代码:
我也试过:
而这个,因为我认为也许 ST_GeomFromText 只能在查询字符串中工作:
但最后 2 最终导致错误异常捕获。谁能告诉我哪里做错了?谢谢
sql-server - 按值分组并从 T-SQL 中的每个组的点(纬度和经度)创建地理折线
这里也问了一个类似的问题:
进一步考虑这个问题,我有一个看起来像这样的表模式:
示例数据如下所示:
如何使用 TSQL 将这些点转换为每个 SensorID的地理折线(以便每个 SensorID 都有一个 SensorID/Polyline 记录)?
我试过使用 db_cursor 但我为每个组得到一个单独的结果集(我认为地理可能是相同的)。这段代码:
结果如下:
最终,我想要一个返回所有 SensorID/Polyline 对的视图。我不知道我目前的方法是否有效。我将不胜感激任何建议或示例。
reporting-services - 在 SSRS 中重复映射?
我有一个 tablix,我在其中插入了一个基于 tablix 行组重复的图表。这有效地在报表中为每个行组显示一个单独的图表。我已安排它每天运行,并以 pdf 格式通过电子邮件发送。
我想用地图做同样的事情,但在设计和在报表服务器上运行时继续遇到性能问题。在视觉工作室中,它只是非常缓慢。在服务器上,如果我安排它运行,我会在运行半小时左右后得到状态“错误:线程被中止”。
我不确定这个问题是否与我的空间数据(“前 2 名”工作正常)、我将 Bing 路线图用作基础层或其他什么有关。我使用的空间数据位于 SQL Server 2012 表中。每天从多个传感器报告纬度/经度数据。我创建了一个视图来通过传感器聚合前一天的数据,并从纬度/经度对构建线几何字段。源表有约 115k 记录,我的视图返回约 90 条记录,其中包含 5 个字段,其中一个字段是几何字段。我报告中的数据集正在视图上执行选择 *。
我试过带/不带 Bing 层。我试过调整 SimplificationResolution 属性(我没有找到单位是什么,甚至猜测合理的值可能是什么)。我不确定还能尝试什么。我会很感激可能让我走上正轨的想法或资源。
.net-core - .NET Core 中的地理和投影
我正在寻找 .NET Core 的 SqlServer.Types 功能的替代方案。我需要同时使用地理(在球形地球上)和几何对象的方法,如 Buffer()、Intersects()、Distance()。
此外,我需要将这些对象从/向 WebMercator 投影投影。
到目前为止,我没有运气。有什么办法可以达到这个结果吗?它应该只是(复杂的,我知道)数学,那么是否有可能没有其他库公开这些功能?
我不能依赖 DB,所以没有 PostgreSql 或 MS-Sql 查询是可能的解决方法:只是应用内代码。
sql - 用表数据将表分成块以在 SQL Server 中处理它们
我希望你们能帮助我,或者至少为我指明正确的方向。我有一个代表多边形边界的 SQL Server 表。在简化版本中大致如下所示:
如您所见,有些路线中有两个多边形,了解它的方法是查看 pointId 字段的连续数字。如果 id 重置为 1 但路线相同,那么您所拥有的是其中包含两个多边形的路线。我的 SQL 脚本的最终目标是处理每条路线和每个多边形,以确定一个点是否在其中任何一个内部。
我所做的如下:
- 有一个游标,它带来了所有不同的路线 ID
- 处理每一行以过滤并获得每条路线的坐标
现在我需要在连续编号之后将每个查询分成单独的主干。我怎样才能避免使用另一个光标并评估每一行来检测计数的变化?是否有一种查询或指令来完成此操作?
分离后,我可以将每个多边形解析为一个几何对象,并检查一个点是否在多边形的边界内。
tsql - SQL 选择有效的几何而不使用 MakeValid
我有一个包含 SQLGeometry 值的大型数据表。根据 OGC ( Geometry.STisValid() ),许多行包含“格式不正确”的几何。当我检查Geometry.STGeometryType()时,这会导致我的许多几何体抛出错误。
当我使用这个 SQL 查询时,我错误地认为它会遗漏无效的几何:
该STGeometryType()
函数抛出此错误:
执行用户定义的例程或聚合“几何”期间发生 .NET Framework 错误:System.ArgumentException:24144:此操作无法完成,因为实例无效。使用 MakeValid 将实例转换为有效实例。请注意,MakeValid 可能会导致几何实例的点稍微移动。System.ArgumentException:在 Microsoft.SqlServer.Types.SqlGeometry.ThrowIfInvalid() 在 Microsoft.SqlServer.Types.SqlGeometry.STGeometryType()
我使用子查询得到同样的错误:
使用Geometry.MakeValid()函数不是一个可行的解决方案,我不能让 SQL Server 任意更改我的几何,但我需要能够判断它们对于像这样的视图是什么类型:
有没有人有更好的解决方案或解决方法?
我能想出的最佳解决方案是选择所有几何STAsText()然后解析字符串,因为STAsText()
如果它无效不会引发任何错误。
postgresql - Postgres / postgis - 确保所有多边形都关闭
我需要编写一个查询来查找任何未闭合的多边形并通过复制第一个点并创建一个额外的端点来关闭它们。
我可以选择无效的行:
而且我能够从每个多边形中转储各个点:
结果如下所示:
这是我的sql技能不足的地方。我需要一些帮助来复制第一个点并使用该数据创建一个新的端点。欢迎使用伪查询 - 我只需要看看它可能是什么样子,我就可以填补空白。
更新:最终解决方案
感谢下面 JGH 的回答,我能够创建以下更新查询。这将找到任何未闭合的多边形并通过复制第一个点来添加新的端点。
注意:这仅适用于简单的“单个”多边形。如果您有复杂的外部和内部多边形,则需要对此查询进行一些重大更改。