首页 / 知识
关于sql server:行字符串之间的相似性
2023-04-15 08:06:00

Similarity between line strings我有许多GPS记录的轨迹,在形式上可以用许多线串来描述。 现在,某些记录的轨迹可能是同一路线的记录,但是由于GPS系统的不准确性,这些记录是在不同的场合进行的,并且它们可能以不同的速度行进,所以不会完美匹配,但当人类在地图上查看时仍然看起来足够接近,以确定其实际上与所记录的路线相同。 我想找到一种计算两个线串之间相似度的算法。我想出了一些自行开发的方法来执行此操作,但是想知道这是否已经有好的算法可以解决。 假设相似的均值表示地图上的相同路径,您将如何计算相似度? 编辑:对于那些不确定我在说什么的人,请查看此链接以获取什么是行字符串的定义:http://msdn.microsoft.com/zh-cn/library/bb895372.aspx-我我不问字符串。 计算每对轨道上的Fréchet距离。距离可用于评估轨迹的相似性。 数学警报:Fréchet是与您的问题相关的度量空间领域的先驱。 我会根据估计的可能误差在第一行周围添加一个缓冲区,然后确定第二行是否完全适合缓冲区。 要确定"相同路线",请创建最小化的标准化路径矢量集,计算总功率差,然后将总功率差与质量度量进行比较。 视觉上调整差异的功效(以平方差异开头)和质量度量(例如占总功效差异的百分比)。该算法可对路径匹配以及二进制结果进行连续的质量度量(路径是否相同?)
您可以在比较归一化向量端点时修改算法。您可以确定是否有任何端点差异超出一定大小(实施Paul的缓冲区思想),或者,如果端点在"缓冲区"之外,则可以使用该事实忽略该端点差异,从而进行比较,而忽略边路。 如果您将单个线串视为[x,y]点(或[x,y,z]点)的序列,则可以使用Needleman-Wunsch算法计算每对线串之间的相似度。如参考的Wikipedia文章中所述,Needleman-Wunsch算法需要一个"相似度矩阵",该矩阵定义一对点之间的距离。但是,使用函数而不是矩阵会很容易。在您的情况下,您可以简单地使用2D欧式距离函数(如果您的点具有高程,则使用3D欧式函数)来提供每对点之间的距离。 您可以沿着LineString A的每个点(Pa)行走,并测量从Pa到LineString B的最近的线段的距离,取每个这些距离的平均值。 这不是一个快速或完美的方法,但是应该能够使用一个有用的数字并且实现起来非常迅速。 线串是在相似的点处开始还是结束,还是程度不同? 我实际上与那个人(亚伦·F)在一起,他说您可能对Levenshtein距离问题感兴趣(并引用了这个观点)。在我看来,他的回答是迄今为止最好的。 更具体地说,Levenshtein距离(也称为编辑距离)并不严格测量每个字符的距离,但允许您执行插入和删除操作。可以在二次时间内计算出这种距离测量的最佳算法(如果您的弦长,则算起来会很慢),但是计算生物学家对此颇有启发,您可能会对自己感兴趣。查看BLAST和FASTA。 在您的问题中,似乎您正在处理数字字符串之间的差异,并且您在乎数字。如果您提供更多信息,我可能会根据您的需要将您定向到BLAST / FASTA / etc的正确变体。无论如何,您都可以考虑根据需要调整BLAST和FASTA。他们很简单。 1:http://en.wikipedia.org/wiki/Levenshtein_distance,http://www.nist.gov/dads/HTML/Levenshtein.html |
最新内容
相关内容
linux查u盘系统命令?
linux查u盘系统命令?,系统,设备,电脑,信息,管理,定期,软件,密码,生产,百分比,linux插入U盘时,怎样查看/dev/sd*的设备详细信息命令很多,举例说linux系统关键命令?
linux系统关键命令?,地址,工作,系统,信息,命令,目录,检测,环境,工具,设备,Linux文件系统操作命令1、cat:可以显示文件的内容(经常和more搭配使linux系统命令终端?
linux系统命令终端?,系统,首页,终端,设备,电脑,情况,信息,命令,界面,用户,linux命令有哪些特点linux命令行的特点?Linux支持多用户,各个用户对linux系统vi命令?
linux系统vi命令?,档案,状态,系统,命令,正规,数字,模式,编辑,文件,光标,linux退出vi编辑命令1、先按ESC进入Command模式,然后输入“:wq”,回车就linux命令替换字符串?
linux命令替换字符串?,字符串,文件,批量,首次,数据,命令,内容,方法,用字,结尾,linux下批量查询文件内容字符串并替换一)通过vi编辑器来替换。vilinux系统命令调用?
linux系统命令调用?,系统,单位,工具,工作,管理,地址,权威,密码,电脑,信息,怎么把linux系统的命令行打开在Linux系统中,打开命令行窗口需要使用linux麒麟系统命令行?
linux麒麟系统命令行?,系统,银河,电脑,设备,公司,信息,手机,密码,平台,麒麟,麒麟操作系统基础知识1、桌面操作系统中标麒麟桌面操作系统是一款linux系统man命令?
linux系统man命令?,信息,地址,系统,工作,命令,数据,管理,单位,目录,文件,linux命令?linux系统常用操作命令如下:ls:全拼list,功能是列出目录的内虚拟机linux系统命令?
虚拟机linux系统命令?,系统,工具,软件,名字,时间,命令,工作,首次,环境,名称,Linux虚拟机命令如何创建新的文件和文件夹1、首先,连接相应linux主linux系统查端口命令?
linux系统查端口命令?,系统,状态,地址,检测,工具,网络,信息,灵活,服务,端口,linux查看服务端口查看Linux系统监听端口:ss-ant Linux系统是非常linux系统分屏命令?
linux系统分屏命令?,系统,工具,地址,工作,命令,基础知识,信息,时间,情况,技术,linux文件系统常用命令其中一些常用的命令包括ls、cd、pwd和mkdlinux系统高级命令?
linux系统高级命令?,系统,工作,地址,信息,管理,命令,地方,目录,功能,用户,请问linux操作系统的命令是什么1、linux命令是对Linux系统进行管理