postGIS错误line_locate_point: 1st arg isnt a line
在做posgis相关的数据库操作时,产生了错误line_locate_point: 1st arg isnt a line。
最后查询发现是ST_LineLocatePoint(geom,geom)空间计算函数,第一参数LINESTRING类型的geom数据,第二个参数是一个点。
本人遇到这个错误,是因为第一个参数里放入了MultiLineString类型的数据。最后改用了将MultiLineString拆分为LINESTRING,进行了计算。
如果不清楚你的geom的数据类型,可以使用ST_GeometryType(geometry g1)查看一个是否是同样的问题。
https://blog.csdn.net/GISuuser/article/details/80504669
参考2:https://blog.csdn.net/weixin_46668477/article/details/107058042
这里注意ST_Line_Locate_Point
接受的参数类型,可能会出现参数类型的错误,解决方法就是调用ST_GeometryN
将前面得到的结果进行一次转换。
如何在PostGIS中使用带有多行字符串转换的st_Line_Locate_Point()?:https://cloud.tencent.com/developer/ask/sof/1005429 https://stackoverflow.com/questions/56441062/how-to-use-st-line-locate-point-with-a-multilinestring-convertion-in-postgis
参考3:
参考4:postgis MULTILINESTRING转linestring
https://blog.csdn.net/GISuuser/article/details/80504754
(1)pgr_fromctod
(2)pgr_shortestpath
(3)pgr_road_compute
咦,为什么会这样呢?导入出错了??
source和target弄错了??
难道是因为线段太短的缘故?还是??怎么生成正确的source和target?
用投影坐标就没这个问题。。