问题标签 [sqlgeography]

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 投票
3 回答
897 浏览

sql-server-2008 - 为什么这个几何点不与多边形相交?

为什么这个几何点不与多边形相交?我知道该点存在于给定的多边形中。它返回0的任何原因?

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 投票
0 回答
747 浏览

c# - 检测相似多边形或 SqlGeography 对象的算法

有没有人更好地了解如何使用 C# 和 SQL Server 检测相似的多边形或地理?目前,我正在通过获取STSymDifference两个对象的(检测不在两个实例中的点)SqlGeography然后计算STArea结果SqlGeography对象的 来做到这一点,如下所示:

有人有更好的算法吗?我知道另一种解决方案可以检测两种形状相似的百分比,但在我的情况下它不起作用,因为形状可能太大以至于这个百分比差异可能以数千平方米为单位。我也知道有一个STEquals方法,SqlGeography但它只有在两个SqlGeography对象具有相同的点集时才有效。

您还可以在谷歌地图上看到下面的多边形图像,如果下次我得到一个相似的多边形,我的算法应该检测它的相似程度。

http://i.stack.imgur.com/jGUr5.png

0 投票
1 回答
295 浏览

sql-server - SQL Server 地理类型性能 - 数据触发器与视图

我正在尝试在 SQL Server 2008 R2 中使用 sys.geography 类型。我想将此地理类型用于基于位置的查询。例如,我将位置(作为经度和纬度变量)传递给存储过程并返回附近的任何记录。

问题是实体框架不支持地理类型,所以我不能直接从 c# 设置这个值。

我通过在同一个表中创建 LocationLatitude 和 LocationLongitude 列来解决这个问题。我使用实体框架中的 LocationLatitude 和 LocationLongitude 列,并使用数据库存储过程中的地理类型“Location”列。

据我所知,有三种方法可以从这两个字段中导出地理“位置”列。

  1. 使“位置”成为计算列
  2. 创建一个返回表格内容+计算位置的视图
  3. 在表上创建数据触发器。这会在每次更新 LocationLongitude 或 LocationLatitude 列时计算地理值并填充 Location 列。

我想知道哪个在性能方面会更好。我认为#1将是最糟糕的,所以我认为这是#2和#3之间的折腾。

我目前正在使用#3(数据触发器),但我知道通常最好避免数据触发器。这意味着从这个角度来看,#2(视图)将是最好的,但是......我担心使用#2可能是一件非常愚蠢的事情,出于某种原因。Stack Overflow 是最好的检查点!

Soo... 我应该使用#1、#2、#3 还是其他方法?

0 投票
1 回答
432 浏览

asp.net-mvc - 经纬地理半径查询

我正在尝试在用户 lat & long 的 X 半径范围内找到商店。我已经阅读了很多关于该主题的问题、答案和文章。我的结果不必非常准确,但如果使用 Geography 列上的过滤器可能会出现误报,这是不可接受的。

鉴于上述要求,我认为不需要使用 Geography 数据类型并添加空间索引。我也不需要完美的圆半径。换句话说,边界框是可以接受的。所以我决定从 Alastaira 那里得到这个解决方案,他在这里就这个主题进行了非常丰富的会议

现在我的应用程序是使用 CF EF4 和 SQL 2008R2 的 MVC。我最初想在 LINQ 中进行操作,就像我在任何其他数据库交互中一样,但老实说,我被以下几个步骤难住了:

我不认为 EF4 支持 geography 数据类型,所以这肯定会使事情复杂化。

然后我开始思考......鉴于数据库有点适合这种处理,我是否应该将 TSQL 包装在一个 SP 中,该 SP 会吐出一个记录集,然后我可以在其上使用 LINQ?

这是我的第一个空间数据库操作,因此欢迎任何想法或建议,我们将不胜感激。

如果 sp 是一个可行的解决方案,建议最好的实施方式会很棒。

0 投票
1 回答
684 浏览

sql - 地理选择查询

我有一个 SQL Server 2012 位置表,其中有一列geo类型geography

我有一个链接到位置表的用户表

地点

用户

我会知道该位置的 ID,并且我知道如何使用 stdistance 进行距离查询。但是,在查询中比较两个距离的最佳方法是什么。我可以使用子选择来做到这一点,但有没有更好的方法

子选择看起来像

0 投票
2 回答
5879 浏览

c# - EntityType 'DbGeography' 没有定义键

长时间的听众,第一次来电(终于在这里注册了一个帐户!)...

我正在使用带有.NET 4.5.1Entity Framework 6(最终版本,不是 RC 或 beta)的Visual Studio 2013 。

尝试将 DbGeography 属性添加到我的实体时,执行时出现此错误:

我已经确认我没有引用旧版本的实体框架(在此处讨论)。我一直在使用这篇文章这篇 MSDN 文章作为示例/信息,因为这是我第一次涉足 .NET(以及 SQL Server,就此而言)中的空间类型。

这是我的实体:

我究竟做错了什么?

0 投票
1 回答
79 浏览

sql - 如何使用位置表创建和计算距离表?

我在 SQL 中有一个 TruckLocation 表。

结果:

我想创建一个新表或存储过程结果是这样的:

我试过但我失败了。

0 投票
1 回答
641 浏览

django - Django模型创建地理而不是几何字段

我有一个 Django 模型,我在其中声明maplocation = models.PointField()我想使用地理而不是几何,如果我使用 python manage.py sql 它映射为"maplocation" geometry(POINT,4326) NOT NULL

我需要做什么才能使翻译正确?

0 投票
3 回答
4812 浏览

sql - 如何将 Microsoft.SqlServer.Types 导入 Microsoft SQL Server 2012?

我刚刚将人口普查块形状文件导入 Microsoft SQL Server 2012,现在在尝试对我引入的数据使用某些地理特征(STContains、STWithin、UnionAggregate 等)时遇到问题。我检查了 .prj导入我的 .shp 文件之前的文件,我确定它是 geogrpahy 而不是几何类型。

这是我一直在尝试的示例,只是为了测试它(直接来自 MSDN 网站):

这是我收到的错误:

我已经对该主题进行了一些研究,似乎我需要安装某种附加功能。我检查了我的 C: 文件夹,因为我看到了通过 Program Files/Microsoft SQL Server/100/SDK/Assemblies/Microsoft.SqlServer.Types.dll 安装它的建议,但因为找不到“Assemblies”文件夹而被难住了。我还看到了下载 Microsoft SQL Server 2012 功能包 ( http://www.microsoft.com/en-us/download/details.aspx?id=29065 ) 的建议,但我不确定我到底需要什么,如果那是正确的看点。

您可能提供的任何帮助将不胜感激。提前致谢。