c#,sql中存储经纬度,获取该一系列经纬度轨迹长度和运动半径

问题描述

一系列经纬度是人员的位置信息。轨迹长度:从sql中取出一系列经纬度,计算该轨迹的总长度;运动半径:最小可以将所有GPS点包围起来的圆的半径,也可以认为所有GPS点中最远的两个点的距离的一半。注:不一定是起始点和终点请问各位有什么好的解决办法。或者可以借助第三方的库。

解决方案

解决方案二:
轨迹长度:可简单可复杂,简单的就是算两点间直线距离,这个你查查就找到了。复杂的要借助google,百度,高德等地图api来计算。运动半径:这个相对简单,你只要找到经度最大最小值,维度最大最小值,可以得到一个矩形,这个矩形中两跟对角线中最长的那根就是圆的直径,交叉点就是圆心。
解决方案三:

解决方案四:
引用1楼xdashewan的回复:

轨迹长度:可简单可复杂,简单的就是算两点间直线距离,这个你查查就找到了。复杂的要借助google,百度,高德等地图api来计算。运动半径:这个相对简单,你只要找到经度最大最小值,维度最大最小值,可以得到一个矩形,这个矩形中两跟对角线中最长的那根就是圆的直径,交叉点就是圆心。

这种方法数据量大的话怕是非常慢啊。我想最简单的能调用第三方的成熟的库
解决方案五:
引用3楼jinianjun的回复:

这种方法数据量大的话怕是非常慢啊。我想最简单的能调用第三方的成熟的库

你一次要计算多少条数据,都是基本的数学计算,快慢完全取决于cpu的运算速度,而且你这种特殊要求貌似没有什么第三方公布这种类库
解决方案六:
引用4楼xdashewan的回复:

Quote: 引用3楼jinianjun的回复:
这种方法数据量大的话怕是非常慢啊。我想最简单的能调用第三方的成熟的库

你一次要计算多少条数据,都是基本的数学计算,快慢完全取决于cpu的运算速度,而且你这种特殊要求貌似没有什么第三方公布这种类库

终端没五分钟上传一次数据,一天工作时间八小时。服务器查询时候一次就要处理这么多的数据
解决方案七:
引用5楼jinianjun的回复:

终端没五分钟上传一次数据,一天工作时间八小时。服务器查询时候一次就要处理这么多的数据

还是没说清楚数量,一次可以只上传一条,也可以是一万条。数据多做预统计,最后做汇总
解决方案八:
引用1楼xdashewan的回复:

轨迹长度:可简单可复杂,简单的就是算两点间直线距离,这个你查查就找到了。复杂的要借助google,百度,高德等地图api来计算。运动半径:这个相对简单,你只要找到经度最大最小值,维度最大最小值,可以得到一个矩形,这个矩形中两跟对角线中最长的那根就是圆的直径,交叉点就是圆心。

嗯,原理明白。取得最大最小经纬度做到了。两点之间的交点的经纬度怎么取得呢?不知您有何办法
解决方案九:
引用2楼wangnaisheng的回复:这位仁兄,既然回复了,请认真一点好不好
解决方案十:
引用8楼jinianjun的回复:

Quote: 引用2楼wangnaisheng的回复:这位仁兄,既然回复了,请认真一点好不好

你要是借鉴不到,就无视好了。我也是给寻求帮助的人一点参考而已,仅此而已。
解决方案十一:
引用1楼xdashewan的回复:

轨迹长度:可简单可复杂,简单的就是算两点间直线距离,这个你查查就找到了。复杂的要借助google,百度,高德等地图api来计算。运动半径:这个相对简单,你只要找到经度最大最小值,维度最大最小值,可以得到一个矩形,这个矩形中两跟对角线中最长的那根就是圆的直径,交叉点就是圆心。

这位大哥,运动轨迹半径,两对角线交点的经纬度如何求取,期望答复,急求
解决方案十二:
引用10楼jinianjun的回复:

这位大哥,运动轨迹半径,两对角线交点的经纬度如何求取,期望答复,急求

两对角线交点的经纬度不就是那个矩形长和宽的两个中心点嘛
解决方案十三:
引用11楼xdashewan的回复:

Quote: 引用10楼jinianjun的回复:
这位大哥,运动轨迹半径,两对角线交点的经纬度如何求取,期望答复,急求

两对角线交点的经纬度不就是那个矩形长和宽的两个中心点嘛

这个矩形可不是规则的矩形啊,怎么会是“长和宽的两个中心点”呢
解决方案十四:
引用12楼jinianjun的回复:

这个矩形可不是规则的矩形啊,怎么会是“长和宽的两个中心点”呢

都说是矩形了怎么会不规则,又不是多边型。既然矩形4个定点都知道了,还能求不出中心点?
解决方案十五:
引用13楼xdashewan的回复:

Quote: 引用12楼jinianjun的回复:
这个矩形可不是规则的矩形啊,怎么会是“长和宽的两个中心点”呢

都说是矩形了怎么会不规则,又不是多边型。既然矩形4个定点都知道了,还能求不出中心点?

好吧,您说得到的矩形是规则的,请看下图:这是很简单的几个点组成的一个路径。请问下,我是怎么去得到一个规则的矩形
解决方案:
引用13楼xdashewan的回复:

Quote: 引用12楼jinianjun的回复:
这个矩形可不是规则的矩形啊,怎么会是“长和宽的两个中心点”呢

都说是矩形了怎么会不规则,又不是多边型。既然矩形4个定点都知道了,还能求不出中心点?

上图中,四个顶点是想要最小的圆把所有点包起来,这四个顶点包起来就可以。我是这么理解的。可是实在想不到这四个点怎么得到一个规则的矩形。当然其他别的情况更是多了,轨迹是千变万化的
解决方案:
图挂了,补图
解决方案:
引用15楼jinianjun的回复:

想要最小的圆把所有点包起来,这四个顶点包起来就可以。我是这么理解的。可是实在想不到这四个点怎么得到一个规则的矩形。当然其他别的情况更是多了,轨迹是千变万化的

引用1楼xdashewan的回复:

运动半径:这个相对简单,你只要找到经度最大最小值,维度最大最小值,可以得到一个矩形,这个矩形中两跟对角线中最长的那根就是圆的直径,交叉点就是圆心。

从这张图再回头看我1楼给你回的帖子
解决方案:
引用17楼xdashewan的回复:

Quote: 引用15楼jinianjun的回复:
想要最小的圆把所有点包起来,这四个顶点包起来就可以。我是这么理解的。可是实在想不到这四个点怎么得到一个规则的矩形。当然其他别的情况更是多了,轨迹是千变万化的

引用1楼xdashewan的回复:

运动半径:这个相对简单,你只要找到经度最大最小值,维度最大最小值,可以得到一个矩形,这个矩形中两跟对角线中最长的那根就是圆的直径,交叉点就是圆心。

从这张图再回头看我1楼给你回的帖子

实在抱歉,真是一图胜千言,我明白了,再次表示感谢。
解决方案:
引用17楼xdashewan的回复:

Quote: 引用15楼jinianjun的回复:
想要最小的圆把所有点包起来,这四个顶点包起来就可以。我是这么理解的。可是实在想不到这四个点怎么得到一个规则的矩形。当然其他别的情况更是多了,轨迹是千变万化的

引用1楼xdashewan的回复:

运动半径:这个相对简单,你只要找到经度最大最小值,维度最大最小值,可以得到一个矩形,这个矩形中两跟对角线中最长的那根就是圆的直径,交叉点就是圆心。

从这张图再回头看我1楼给你回的帖子

这么看的话,矩形是绝对规则的,两根对角线的长度也必然是完全相等的,那么就没有“这个矩形中两跟对角线中最长的那根”的说法了,对吗
解决方案:
引用19楼jinianjun的回复:

这么看的话,矩形是绝对规则的,两根对角线的长度也必然是完全相等的,那么就没有“这个矩形中两跟对角线中最长的那根”的说法了,对吗

这样算对角线是一样长的。不过有一点要先告诉你,这是近似最小圆,并非真正的最小圆。真正的最小圆算法是要求出所有点之间距离最远的两个点,以那两个点的距离为直径画出的圆才是最小圆。但你坐标很多,要算出最远两点绝非易事,所以才用近似算法。如果追求高精度就要慎重考虑下。
解决方案:
引用20楼xdashewan的回复:

Quote: 引用19楼jinianjun的回复:
这么看的话,矩形是绝对规则的,两根对角线的长度也必然是完全相等的,那么就没有“这个矩形中两跟对角线中最长的那根”的说法了,对吗

这样算对角线是一样长的。不过有一点要先告诉你,这是近似最小圆,并非真正的最小圆。真正的最小圆算法是要求出所有点之间距离最远的两个点,以那两个点的距离为直径画出的圆才是最小圆。但你坐标很多,要算出最远两点绝非易事,所以才用近似算法。如果追求高精度就要慎重考虑下。

“真正的最小圆算法是要求出所有点之间距离最远的两个点,以那两个点的距离为直径画出的圆才是最小圆”。这个非常对的,我现在就是想求出所有点中距离最大的两个点之间的距离。不知有什么算法,总不能把所有的点两两组合去一一对比吧

时间: 2024-08-29 01:23:02

c#,sql中存储经纬度,获取该一系列经纬度轨迹长度和运动半径的相关文章

如何使用Aspose.Cell导出SQL中存储的图片(byte[])至Excel表格(C#)

问题描述 大家好:问题如题所示,如何使用C#语言通过Aspose.Cells控件将SQL中存储的byte[]图片导出到Excel表格中?我现在已经将SQL中的图纸读取到(byte[]类型),怎么样将byte[]导出到Excel表格中?非常感谢! 解决方案 解决方案二:各位大侠,在线等帮助啊!

SQL中Group分组获取Top N方法实现可首选row_number_MsSql

有产品表,包含id,name,city,addtime四个字段,因报表需要按城市分组,统计每个城市的最新10个产品,便向该表中插入了100万数据,做了如下系列测试: 复制代码 代码如下: CREATE TABLE [dbo].[products]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](50) NULL, [addtime] [datetime] NULL, [city] [nvarchar](10) NULL, CONSTRA

SQL中Group分组获取Top N方法实现可首选row_number

有产品表,包含id,name,city,addtime四个字段,因报表需要按城市分组,统计每个城市的最新10个产品,便向该表中插入了100万数据,做了如下系列测试: 复制代码 代码如下: CREATE TABLE [dbo].[products]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](50) NULL, [addtime] [datetime] NULL, [city] [nvarchar](10) NULL, CONSTRA

SQL Server数据库获取TEXT字段的内容长度的方法

SQL Server数据库如何获取TEXT字段的内容长度呢?本文我们就来介绍一下SQL Server数据库如何获取TEXT字段的内容长度的方法,是通过DATALENGTH函数来实现的,接下来我们就通过DATALENGTH函数的语法及使用实例来了解一下这部分内容.   DATALENGTH用来返回任何表达式所占用的字节数. 语法:DATALENGTH ( expression ) 参数:expression,任何类型的表达式. 返回类型:int 注释:DATALENGTH 对 varchar.va

MSSQL数据库获取TEXT字段的内容长度_MsSql

SQL Server数据库如何获取TEXT字段的内容长度的方法,是通过DATALENGTH函数来实现的,接下来我们就通过DATALENGTH函数的语法及使用实例来了解一下这部分内容. DATALENGTH用来返回任何表达式所占用的字节数. 语法:DATALENGTH ( expression ) 参数:expression,任何类型的表达式. 返回类型:int 注释:DATALENGTH 对 varchar.varbinary.text.image.nvarchar 和 ntext 数据类型特别

MSSQL数据库获取TEXT字段的内容长度

SQL Server数据库如何获取TEXT字段的内容长度的方法,是通过DATALENGTH函数来实现的,接下来我们就通过DATALENGTH函数的语法及使用实例来了解一下这部分内容. DATALENGTH用来返回任何表达式所占用的字节数. 语法:DATALENGTH ( expression ) 参数:expression,任何类型的表达式. 返回类型:int 注释:DATALENGTH 对 varchar.varbinary.text.image.nvarchar 和 ntext 数据类型特别

在SQL中获取一个长字符串中某个字符串出现次数的实现方法

以下是对在SQL中获取一个长字符串中某个字符串出现次数的实现方法进行了详细的分析介绍,需要的朋友可以参考下   在SQL中获取一个长字符串中某个字符串出现次数的实现方法 比如有个字符串: X-BGS-2010-09-15-001 我想知道其中'-'出现的次数,可以用下面的方法实现,而不需要复杂的一个个字符分析. declare @a varchar(100) set @a='X-BGS-2010-09-15-001' select len(replace(@a,'-','--'))-len(@a

sql 中获取最后生成的标识值 IDENT_CURRENT ,@@IDENTITY ,SCOPE_IDENTITY 的用法和区别

原文:sql 中获取最后生成的标识值 IDENT_CURRENT ,@@IDENTITY ,SCOPE_IDENTITY 的用法和区别 IDENT_CURRENT 返回为任何会话和任何作用域中的指定表最后生成的标识值. 语法 IDENT_CURRENT('table_name') 参数 table_name 是将要返回其标识值的表的名称.table_name 的数据类型为 varchar,没有默认值. 返回类型 sql_variant 注释 IDENT_CURRENT 类似于 Microsoft

音频存储数据库-现在遇到一个难题就是怎么将音频文件存储到sql中

问题描述 现在遇到一个难题就是怎么将音频文件存储到sql中 android开发项目过程中需要做一个录音功能,录音给他人他能登陆后能够收到,想qq微信类型,现在想把录好的音频信息存到数据库中就是不知道怎么实现.有哪位大牛做过类似的功能,帮忙解决下