Postgis 如何在z为公差的情况下比较沿x,y坐标的路径

Postgis 如何在z为公差的情况下比较沿x,y坐标的路径,postgis,Postgis,请接受我的解释。。。是否有人有一些示例代码可以比较x,y坐标系中两条路径的相似性,其中z是0-100%的公差设置 例如,比较路径 (0,0,0),(1,1,0),(2,2,100) (0,0,0),(1,1,0),(2,2,0) 走 (0,0,0),(1,1,0),(3,3,100) (0,0,0),(1,1,0),(1,1,0) 将显示100%的相似性,因为前两个点在零公差设置下匹配,最后一个点在100%公差设置下不匹配 和比较路径 (0,0,0),(1,1,0),(2,2,100)

请接受我的解释。。。是否有人有一些示例代码可以比较x,y坐标系中两条路径的相似性,其中z是0-100%的公差设置

例如,比较路径

(0,0,0),(1,1,0),(2,2,100)
(0,0,0),(1,1,0),(2,2,0)

(0,0,0),(1,1,0),(3,3,100)
(0,0,0),(1,1,0),(1,1,0)
将显示100%的相似性,因为前两个点在零公差设置下匹配,最后一个点在100%公差设置下不匹配

和比较路径

(0,0,0),(1,1,0),(2,2,100)
(0,0,0),(1,1,0),(2,2,0)

(0,0,0),(1,1,0),(3,3,100)
(0,0,0),(1,1,0),(1,1,0)

将显示66%的匹配,因为最后的点与零公差设置不匹配。这也可以转位吗?

每个线串是否总是具有相同的坐标数?或者它们可能是不同的,并且在两者之间插入?如果另一个坐标具有不同的公差,会发生什么情况?如何量化坐标的相似性?简言之,不,我知道没有什么可以做的,但是它可以在PL/pgSQL函数中使用线性引用函数来完成。它应该使用“M”坐标来实现,例如
LINESTRING M(0 0 0,1 1 0,2 2 100)
No,每个LINESTRING可以有不同数量的坐标。如果另一个坐标具有不同的公差,则将使用两者的平均值。可怜虫,没有什么能做这件事。PL/pgSQL函数可能不起作用,因为我肯定需要一个用于20M+值的索引。我将查看“M”坐标。您可以将“M”坐标添加到任何2/3D线条字符串中。ST_AddMeasure使用起始值和结束值,内部坐标线性插值,例如
选择ST_AsText(ST_AddMeasure('LINESTRING(0,1,2)),0,100)。请注意,大多数其他软件(如GDAL/OGR)不支持M坐标。但Shapefile和ArcGIS使用它。如果您需要使用GDAL或OGR,您可能希望坚持最初使用“Z”坐标的想法,因为大多数软件都很支持这一点。您可能要使用CTE以及generate_series、st_pointn来对齐两条直线,然后使用窗口函数来比较相似性,如果您想避免plpgsql。@JohnBarça
ST_Dump
返回几何体及其索引,因此使用它可能比生成_series+ST_pointn更容易。