【发布时间】:2017-03-17 15:55:54
【问题描述】:
具体来说,我得到了一个我不明白的结果。我的理解可能完全是错误的,但我不这么认为。所以我希望有人会说“是的,这是一个已知问题”或“不,它工作正常,这就是你的理解错误的原因”。
这是我的例子。
首先,我有以下纬度/经度几何形状。
LINESTRING(-1.32007599 51.06707497,-1.31192207 51.09430508,-1.30926132 51.10206677,-1.30376816 51.11133597,-1.29261017 51.12981493,-1.27510071 51.15906713,-1.27057314 51.16440941,-1.26606703 51.16897072,-1.26235485 51.17439257,-1.26089573 51.17875111,-1.26044512 51.1833917,- 1.25793457 51.19727033,-1.25669003 51.20141159,-1.25347137 51.20630532,-1.24845028 51.21110444,-1.23325825 51.22457158,-1.2274003 51.22821321,-1.22038364 51.23103494,-1.20326042 51.23596583,-1.1776185 51.24346193,-1.16356373 51.24968088,-1.13167763 51.26363353,-1.12247229 51.2659966,-1.11629248 51.26682901 ,-1.10906124 51.26728549,-1.09052181 51.26823871,-1.08522177 51.26885628,-1.07013702 51.27070895,-1.03683472 51.27350122,-1.00917578 51.27572955,-0.98243952 51.2779175,-0.9509182 51.28095094,-0.9267354 51.28305811,-0.90499878 51.28511151,-0.86051702 51.2883055,-0.83661318 51.29023789,- 0.7534647 51.29708113,-0.74908733 51.29795323,-0.7400322 51.2988924,-0.71535587 51.30125366,-0.68475723 51.29863749,-0.6574630 1.30220618,-0.63246489 51.30380261,-0.60542822 51.30645873,-0.58150291 51.3103219,-0.57603121 51.31150225,-0.57062387 51.31317883,-0.54195642 51.32475227,-0.4855442 51.34771616,-0.4553318 51.36283147)
这是在我的表中名为“geom”的列中,名为“fiber_lines”。当我运行以下查询时,
select st_length(geography(geom), false) as full_length,
st_length(geography(st_line_substring(geom, 0, 1)), false) as full_length_2,
st_length(geography(st_line_substring(geom, 0, 0.5)), false) as first_half,
st_length(geography(st_line_substring(geom, 0.5, 1)), false) as second_half
from fibre_lines
where id = 10;
我得到以下结果...
76399.4939375278 76399.4939375278 41008.9667229201 35390.5272197668
前两个对我来说很有意义,它们只是假设地球是球形的我的线的长度。第一个只是使用明显的函数,而第二个是使用 st_line_substring 来获取整行的长度。这两个值一致。
但最后两个让我感到困惑。我要的是前半部分的长度,然后我要的是后半部分的长度。我的期望是这些将相等或几乎相等。相反,前半部分比后半部分长约 6 公里。
如果您在地图上绘制几何图形,您会看到线的前三分之一是相当北/南方向的,其余三分之二更偏东/西。在询问球形地球上的长度时,我不会想到这会有所不同,但我很高兴被告知我错了(只要还解释了我错的原因)。
作为参考,我使用的 PostGIS 是 1.5.8。 如果这是一个错误,升级到新版本是可能的,但不是微不足道的,所以我宁愿只这样做如果有必要。
有人有想法吗?
【问题讨论】:
-
ST_AsText(ST_Line_SubString(geom, 0, 0.5)) 和 ST_AsText(ST_Line_SubString(geom, .5, 1)) 是否有匹配的终点和起点?
-
这个问题似乎暗示你可能不想使用st_length:gis.stackexchange.com/questions/63762/…
标签: postgis