问题标签 [nettopologysuite]

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 回答
4021 浏览

c# - 将 GeoJson 功能映射到属性

我正在尝试将 GeoJSON FeatureCollection 中的 Multipolygon 映射到 Multipolygon 的 NetTopologySuite 类型的属性。

这就是我得到的:

地理JSON:

我的模型:

我尝试使用 NetTopologySuite 和 GeoJSON.Net 库进行 GeoJSON 转换和映射,但我没有走多远。我在控制器中接收 GeoJSON 作为字符串:

有任何想法吗?

谢谢!

0 投票
1 回答
394 浏览

c# - 使用 NetTopologySuite 保存几何时的 Entity Framework Core IndexOutOfRangeException

DbUpdateException当我调用SaveChanges从 shapefile 加载的一些几何图形时,我得到了一个。我得到的错误是:

IndexOutOfRangeException:索引超出了数组的范围。

这是一些保存两个 WKT 多边形的示例代码:第一个很好,但第二个会产生错误:

https://gist.github.com/capesean/57527a0576d5972ff1514438440397fa

(WKT代码太长,这里不贴)

WKT 似乎有效:http ://dev.openlayers.org/examples/vector-formats.html

我可以将它直接加载到 SQL Server 中:

0 投票
0 回答
46 浏览

entity-framework-core - EF Core 2.2.6 查询在尝试使用 NetTopologySuite 时不起作用

我正在尝试将 NetTopologySuite 与 EF Core 2.2.6 一起使用来执行地理搜索。

我已成功Point向我的模型添加了位置,EF Core可以读取和写入此属性。

但是,当我尝试将此谓词添加到我的查询中时,我发现了两个问题:

  1. 执行NullReferenceException查询时抛出异常。
  1. 如果我在 SQL Profiler 中查看已执行的 SQL,则不会添加任何 WHERE 子句。

我已经检查过的事情:

  1. 我有UseNetTopologySuite()我的OnConfiguring覆盖。
  2. 我使用NetTopologySuite.Core的是 1.15.3 版本,这是 EF Core 2.2.6 的合适版本。
0 投票
1 回答
795 浏览

c# - 如何在 C# 中将 KML 转换为 WKT?

我可以使用 nettopologysuite 轻松地将 WKT 转换为 KML,例如:

但我找不到任何关于如何反其道而行之的文档或想法。我想我需要一个来自 nettopologysuite IO KML 的 KMLReader 对象,但只有一个作家。有没有办法做到这一点,我没有看到?

0 投票
1 回答
1086 浏览

c# - 使用 EF Core 2.2、Npgsql 和 NetTopologySuite 映射几何图形

我正在尝试映射此类:

但是当我尝试添加一个新的迁移时,我遇到了这个错误:

无法映射属性“Geometry.UserData”,因为它属于“对象”类型,不是受支持的原始类型或有效的实体类型...

做一些研究(https://www.npgsql.org/efcore/mapping/nts.html)我发现我需要使用:

services.AddDbContext<DataContext>(x => x.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), o => o.UseNetTopologySuite()));

代替

services.AddDbContext<DataContext>(x => x.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));

但添加o => o.UseNetTopologySuite()我有错误:

“NpgsqlDbContextOptionsBuilder”不包含“UseNetTopologySuite”的定义

我认为这与版本问题有关,但我使用的版本与 github(https://github.com/npgsql/efcore.pg/issues/1024)上的这个问题中的建议完全相同。

NuGet:

在此处输入图像描述

0 投票
1 回答
520 浏览

c# - NetTopologySuite.Core 1.15.3 和距离单位

我想将距离的笛卡尔坐标“转换”为米。

我添加了

我尝试使用以下代码:

我的分机在哪里:

ProjNet4GeoAPI添加了 nuget 包 (v 1.4.1)

但我无法解决GeometryTransform类,它没有找到。

如何解决?

0 投票
2 回答
8724 浏览

c# - 带有 NetTopologySuite.Geometries.Point 的 Entity Framework Core 3.1:SqlException:提供的值不是数据类型地理的有效实例

我有一个看起来像这样的模型:

添加点的测试代码:

我正在使用以下 NuGet,版本3.1.0

我在保存时遇到的异常如下:

SqlException:传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议流不正确。参数 7 ("@p6"):提供的值不是数据类型 geography 的有效实例。检查源数据中的无效值。无效值的一个示例是小数位数大于精度的数值类型数据。

根据所有文档,经度应该是 X,纬度应该是 Y,所以我认为这不是问题。我试图颠倒坐标以防万一,但我遇到了与您在我尝试过的示例中看到的相同的错误。

https://docs.microsoft.com/en-us/ef/core/modeling/spatial

纬度 = Y 经度 = X

https://gis.stackexchange.com/a/68856/71364

我找不到任何明显的错误。设置了 Optionsbuilder,该表是使用与Entity Framework 6geography非常配合的数据类型创建的。DbGeography

Point我在 SQL Server 的文档中可以看到,没有任何特定情况需要处理。

https://docs.microsoft.com/en-us/ef/core/modeling/spatial#sql-server

我保存的坐标来自谷歌地图,因此EPSG 3857被使用。

https://gis.stackexchange.com/questions/48949/epsg-3857-or-4326-for-googlemaps-openstreetmap-and-leaflet

我错过了什么?

0 投票
1 回答
1735 浏览

c# - 如何使用 Net Topology Suite 在 Entity Framework Core 中将点(地理)缓冲 1 米

我按照此处的建议将 Entity Framework Core (3.1.0) 与 Net Topology Suite 包一起使用,并且我很难缓冲一个点以在其周围创建一个圆形多边形。如果我传递一个1to的值Buffer(),我相信这意味着 1 米,我最终会得到一个半径接近 120 英里的圆。

我应该用什么值来表示 1 米?我正在使用GeometryFactorySRID 为 4326 的 a 创建点和多边形。这是我正在使用的大致代码:

0 投票
1 回答
228 浏览

c# - NetTopologySuite ShapeDataReader 错误:不支持的 DBF 读取器类型 13

我正在尝试读取从geojson.io创建的 .shp进行一些测试,它给了我一个包含以下文件的 .zip。

当我尝试单独读取 .shp 时,出现错误:“System.IO.FileNotFoundException: '.../POLYGON.dbf'”。
当我尝试使用同一文件夹中的 .dbf 读取 .shp 时,出现错误:“System.NotSupportedException: 'Unsupported DBF reader Type 13'”。

我试图在 QGIS 中打开这个 .shp 并且它有效。
我尝试使用我的代码从其他来源读取其他 .shp 文件并且它有效。

代码:

文件:
POLYGON.dbf
POLYGON.prj
POLYGON.shp
POLYGON.shx

0 投票
1 回答
429 浏览

c# - 使用 NetTopologySuite 计算点(纬度,经度)之间的距离

我关注了这篇文章https://docs.microsoft.com/en-us/ef/core/modeling/spatial但没有工作。

此代码返回距离 = 17062 米

从网站距离计算器我得到距离 = 17.02 公里

对于文章中的示例,距离大致相同。

但是如果我选择这个坐标:

此代码返回距离 = 1926891 米

从网站,距离 = 1,728 公里

相差约200米。我在其他位置进行了测试,结果更糟

文章中有评论://不同的数据需要不同的坐标系。

这是什么意思?我应该使用 2855 以外的其他坐标系吗?哪一个?