问题标签 [dbgeography]

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 投票
1 回答
204 浏览

c# - DbGeography 相交

我正在DbGeography使用Entity Framework 6这个模型:

然后我尝试执行如下Intersects方法:

但是,对于这两种方法,创建的查询看起来像这样。我可以做些什么来不选择整个表并在数据库中执行查询?

0 投票
1 回答
159 浏览

c# - 传递 DBGeometry 列表以检索 SQL 中包含的点

我的 SQL 服务器上有一个数据集,其中包含几百万个地理点,我想根据我在客户端创建的 DBGeography 矩形网格来检索这些地理点。基本上我想传入 ac# List of DBGeography ,我的服务器将返回适合这些几何图形的点列表,以及它们所属的 DBGeography 。我目前正在查询每个单独的矩形,如果我要拉的地图被分成大量的瓷砖,则会引起很多查询。显然,性能受到影响。

我目前正在使用下面的代码。

问题:我将如何更改它以传入 DBGeography 矩形列表并取回相应的数据?

MyRectangle 是我在 C# 中创建的 DBGeography,而 Location 是我的 SQL 表中的点地理。此代码当前有效,但一次仅适用于一个单元格。我尝试了几件事,但无济于事。实体框架不是我的专长,但我也不知道如何直接使用 SQL(尽管如果需要解决方案,我可以使用 SQL)。

我还尝试将所有点(从较大的外部矩形)拉到客户端,然后在客户端进行处理以将其细分为网格。即使初始查询几乎是即时的(可能是因为索引),性能也很慢。

0 投票
1 回答
719 浏览

c# - 将两个 C# DbGeography 多边形连接成一个多多边形

我从官方来源下载了一张包含瑞典地区的地图作为 Shape 文件。然后我使用QGIS将数据转换为geojson,然后将其转换geojsonDbGeography如下所示:

https://stackoverflow.com/a/49225753/3850405

地图来源:

https://www.lantmateriet.se/sv/Kartor-och-geografisk-information/Kartor/oppna-data/hamta-oppna-geodata/#faq:gsd-distriktsindelning

这些地区可以有两个或更多区域,但不是multipolygon,但polygon每个区域共享相同的密钥(代码)。使用其他官方来源,我直接得到了一个multipolygon,但不是来自这个来源。当我将它保存到我的数据库时,我想正确地进行操作,并且只有一次 code 和 name 属性并将其存储为multipolygon. 我使用实体框架将信息存储到我的数据库中。

如何将两个或多个多边形连接成一个多多边形?

带有代码的Stora Hammars distrikt示例101019

在此处输入图像描述

当前代码:

模型:

方法:

扩展方法是为了解决由于 SQL Server 使用左手方向而导致的MakePolygonValid()环方向错误,而瑞典几乎所有的源都使用右手方向。这里描述了扩展方法:

https://stackoverflow.com/a/49454154/3850405

0 投票
1 回答
84 浏览

xamarin.forms - 无法让 DbGeography 在 Xamarin.Forms 应用程序中工作

执行所有 Gets、Puts、Posts 等操作的 SDK 是 PCL。因此,我无法安装实体框架。

使用 Postman 的基本获取返回有关 DbGeography 的以下数据。

由于我无法安装实体框架,因此我尝试创建自己的 DbGeography 和 DbGeographyWellKnownValue。

我从应用程序进行的 API 调用应返回 4 条完整记录。相反,一旦 Json 被反序列化,它就会返回 1 条完整记录和 3 条空记录。我认为这与 DbGeography 字段有关。我试过添加 [JsonIgnore],但这仍然没有得到 4 条完整的记录。这是我的 Location、DbGeography、DbGeographyWellKnownValue 和 DbGeographyConverter 类。

地点

地理数据库

DbGeography众所周知的值

最后,我有一个DbGeographyConverter类。

这一切都在我的 MVC 5 Web 应用程序中完美运行,并且使用相同的 API,所以我知道它与 DbGeography 字段有关。

任何帮助深表感谢。谢谢!

0 投票
1 回答
157 浏览

c# - System.Data.Spatial DbGeography.Distance 无法始终如一地工作

我正在开发一个需要计算点之间距离的应用程序。我正在使用 LINQ 和 DbGeography 类来实现这一点。

在大多数情况下,它在应用程序中运行良好,但是我遇到了一个问题,它没有返回正确的结果。我请看一下,看看你是否发现问题。

我有用于测试目的的硬编码值。

这个确切的代码适用于其他值,所以我很难过。请帮忙

谢谢

0 投票
1 回答
33 浏览

c# - 在我的 dbGeography linq-to-entity 语句中删除半径子句

如何删除我的 linq-to-entity 语句中的“半径”,以便它不会将搜索限制在半径范围内?

仅供参考 - 我希望我的查询搜索以“术语”开头的名称,并从最接近位置点的名称开始向外搜索,但不将其限制为半径

0 投票
1 回答
187 浏览

wcf - 如何在 WCF 服务应用程序中使用 Microsoft.SqlServer.Types

我正在开发 WCF 服务应用程序。我想找到离某人最近的位置。我的问题是当我想调用与 System.Data.Entity.Spatial.DbGeography 相关的任何方法时,我收到此错误“空间类型和函数不适用于此提供程序,因为程序集 'Microsoft.SqlServer.Types' 版本 10 或更高版本可能找不到。”

我在 Visual Studio 2017 解决方案中通过 NuGet 安装 Microsoft.SqlServer.Types 并在调用 DbGeography 类之前调用​​加载 SqlServerTypes 程序集

在尝试查询位置之前,我调用了 CheckSqlServerTypes(),但我仍然收到此错误“空间类型和函数不适用于此提供程序,因为找不到程序集 'Microsoft.SqlServer.Types' 版本 10 或更高版本。”

我的错误是什么?

0 投票
1 回答
52 浏览

c# - DbGeography 联合减法而不是合并

我正在尝试使用 DbGeography 将数千个矩形组合成一个多边形。对于测试,我只从两个矩形开始(因为数千个矩形都失败了,结果是完整的)。当我使用 DbGeography 的 union 方法时,它返回一个多边形,其中一个矩形从另一个矩形中减去,而不是组合它们。我用 SQLGeography 尝试了相同的过程并得到了相同的结果。谁能看到我做错了什么?还是我误解了联合方法?

两个单独的矩形显示重叠:

在此处输入图像描述

联合后产生的多边形:

在此处输入图像描述

代码(geog1为左上矩形,geog2为右下):

以下是我正在合并的多边形和生成的多边形的值:

0 投票
1 回答
60 浏览

c# - System.Data.Spatial DBGeography.Distance() 将与 SQL Server 2008 一起使用吗?

我正在使用LINQToSQL、c#System.Data.Spatial.DBGeography.Distance()来计算两个位置之间的距离。DBGeography我验证这适用于 SQL Server 2012。我可以在 SQL Server 2008 中使用它吗?

先感谢您!

0 投票
1 回答
57 浏览

c# - DbGeography.Distance 返回不正确的结果

这是我的简化代码:

这是“CreatePoint”函数:

我在几个来源中看到结果应该以米为单位,所以我预计会看到493

http://boulter.com/gps/distance/?from=-73.98%2C40.7155773&to=-73.984434%2C40.7155773&units=k

谷歌地图测量工具显示相同的结果(但它不允许共享链接)。

但是我从“距离”函数得到的结果是374.65。我检查了两个对象的 CoordinateSystemId,它的默认值是 4326。

那么我做错了什么?或者那个结果是哪个单位的?