我有一个线形字符串DbGeography对象,我想沿线索找到一些点,给出总距离的一个小数值。例如,如果我给0.5,我应该将该行的中点作为具有点WKT(已知文本)的DbGeography对象。如何使用DbGeography插入沿线串的点?
我试过挖掘DbGeography文档,但没有明显的“简单”方法似乎存在。
我想这种方法会类似于Google Maps JS API球形几何插值方法。有什么建议么?
我有一个线形字符串DbGeography对象,我想沿线索找到一些点,给出总距离的一个小数值。例如,如果我给0.5,我应该将该行的中点作为具有点WKT(已知文本)的DbGeography对象。如何使用DbGeography插入沿线串的点?
我试过挖掘DbGeography文档,但没有明显的“简单”方法似乎存在。
我想这种方法会类似于Google Maps JS API球形几何插值方法。有什么建议么?
我做这个使用下面的方法之前:直到你找到对相邻点之间的目标点必须位于
迭代通过线段形式的点(目标距离要么给予或可以很容易地从你提到的距离分数中计算出来);然后
在每个两分的使用DbGeography.Buffer
,提供"remaining distance to the target" + "small distance padding"
*与第一和"distance between the two points" - "remaining distance to the target" + "small distance padding"
与第二;然后
使用DbGeography.Intersection
上的两点,得到一个小多边形,不是一个点;然后
将该多边形转换为DbGeometry
对象并取其Centroid
;那么
如果需要,将该结果点转换回DbGeography
对象。
请注意,这在技术上并不是最精确的,因为几何质心通常不与地理中心相同。然而,在这种情况下,这几乎肯定是足够好的,因为从中取得质心的多边形可以很小(例如,通过使用1米作为缓冲距离填充)。
*:提供距离填充是为了避免由于浮点数的舍入错误导致的“接近未命中”。如果我们有无限的精度,显然你只需要缓冲区没有填充,然后交叉口会给你你正在寻找的确切点。