.net - 如何使用 DbGeography 沿线串插入点?

标签 .net geospatial spatial-interpolation

我有一个线串 DbGeography 对象,我想在给定总距离的小数值的情况下找到沿线串的某个点。例如,如果我给出 0.5,我应该将线的中点作为带有点 WKT(众所周知的文本)的 DbGeography 对象获取。

我尝试深入研究 DbGeography 文档,但似乎不存在明显的“简单”方法。

我认为此方法类似于 Google Maps JS API 球形几何插值方法。有什么建议吗?

最佳答案

我在使用以下方法之前已经完成了此操作:

  1. 迭代 LineString 的点,直到找到目标点必须位于其间的一对相邻点(目标距离要么是给定的,要么可以根据您提到的距离分数轻松计算出来);然后

  2. 在两个点中的每一个上使用DbGeography.Buffer,提供“到目标的剩余距离”+“小距离填充”* 第一个,“两点之间的距离” - “到目标的剩余距离”+“小距离填充” 第二个;然后

  3. 在两个点上使用DbGeography.Intersection,得到一个小多边形,不是一个点;然后

  4. 将该多边形转换为 DbGeometry 对象并获取其质心;然后

  5. 如果需要,将该结果点转换回 DbGeography 对象。

请注意,这在技术上并不是最精确的,因为几何质心通常与地理中心不同。然而,在这种情况下,它几乎肯定足够好,因为从中获取质心的多边形可能非常小(例如,使用 1 米作为缓冲距离填充)。

*:提供距离填充是为了尽量避免由于浮点舍入错误而导致的“险些发生”。如果我们有无限的精度,显然你只需获取没有填充的缓冲区,然后交集就会给你你正在寻找的确切点。

关于.net - 如何使用 DbGeography 沿线串插入点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948363/

相关文章:

r - 自动克里格空间数据

python - 根据每个点的最近邻距离在最佳网格上插入非结构化 X、Y、Z 数据

c# - 如何在 System.Windows.Forms.WebBrowser 中调用自定义 Javascript?

r - 在 R map 中包含比例和坐标

language-agnostic - 如何计算球体上一点到线段的距离?

python - 二维线性插值产生数据范围之外的结果

.net - MSBuild - 为解决方案设置属性

c# - C#中的实时wmv视频编码

.Net PostgreSQL 连接字符串

r - 更改已采用 SpatialPointsDataFrame 格式的对象的坐标值