亚欧大陆跨越经纬度经度的排序

1517人阅读
Mysql(7)
按经纬度搜索附近的人,并按距离排序的简单实现
这是一种简单的实现,数据量不大的情况下还是能满足需求的,写在这里做一份记录。当然也希望有其他更好的方案。
主要思路就是:先以自己的经纬度为中心,计算一定半径内的方形经纬度边界,然后用此方形经纬度边界过滤用户,并使用一个计算两点经纬度之间距离的自定义数据库函数计算距离,然后按计算得到的距离倒序
计算一定半径内的方形经纬度
long raidus = 10000;
double lat = 23.155778;
double lon = 113.262744;
Map&String, Object& param = new HashMap&&();
param.put("lat", lat);
param.put("lon", lon);
private void loadGeoSquare(Map&String, Object& parm, double lat, double lon, long raidus){
Double latitude =
Double longitude =
Double degree = (24901 * 1609) / 360.0;
double raidusMile =
Double dpmLat = 1 /
Double radiusLat = dpmLat * raidusM
Double minLat = latitude - radiusL
Double maxLat = latitude + radiusL
Double mpdLng = degree * Math.cos(latitude * (Math.PI / 180));
Double dpmLng = 1 / mpdL
Double radiusLng = dpmLng * raidusM
Double minLng = longitude - radiusL
Double maxLng = longitude + radiusL
parm.put("minLat", minLat);
parm.put("minLng", minLng);
parm.put("maxLat", maxLat);
parm.put("maxLng", maxLng);
我用的Mybatis,当然SQL大家应该都能看懂
&select id="queryNearbyPage" resultType="AppUserNearby"&
SELECT id, avatar, nickname, sex, birthday, lovecode,
ROUND(lat_lng_distance(#{lat}, #{lon}, lat, lon), 2) AS distance
FROM zan_user zuser
&![CDATA[ AND lat & #{minLat} AND lat & #{maxLat} AND lon & #{minLng} AND lon & #{maxLng} ]]&
ORDER BY distance ASC
LIMIT #{rowStart},#{rowEnd}
其中的 计算两个经纬度之间距离的 数据库函数,这里也贴出来:
CREATE FUNCTION `lat_lng_distance` (lat1 FLOAT, lng1 FLOAT, lat2 FLOAT, lng2 FLOAT)
RETURNS FLOAT
DETERMINISTIC
RETURN 6371 * 2 * ASIN(SQRT(
POWER(SIN((lat1 - abs(lat2)) * pi()/180 / 2),
2) + COS(lat1 * pi()/180 ) * COS(abs(lat2) *
pi()/180) * POWER(SIN((lng1 - lng2) *
pi()/180 / 2), 2) ));
--Returns the distance in kilometers, assuming a earth radius of 6,371 km.
以上计算上的数学理论,我没有深究,也是参看相关资料的。总感觉这种实现方式好搓。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:49869次
排名:千里之外
原创:36篇
转载:12篇
评论:10条
(1)(6)(4)(3)(2)(6)(3)(6)(1)(4)(1)(1)(1)(2)(1)(1)(1)(1)(6)当前位置:
>>>世界上跨经度最大的大洲是[]A.亚洲B.北美洲C.南极洲D.欧洲-八年级..
世界上跨经度最大的大洲是
A.亚洲B.北美洲C.南极洲D.欧洲
题型:单选题难度:偏易来源:同步题
马上分享给同学
据魔方格专家权威分析,试题“世界上跨经度最大的大洲是[]A.亚洲B.北美洲C.南极洲D.欧洲-八年级..”主要考查你对&&极地地区&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
极地气候:极地气候又称寒带气候,包括冰原气候和苔原气候两种类型。冰原气候分布在南极大陆和北冰洋的一些岛屿上,终年严寒,地面覆盖着很厚的冰雪。苔原气候分布在亚欧大陆和北美大陆的北部边缘地带,常冬无夏,地面生长着苔藓、地衣等等植物。北极型极地气候(苔原气候):主要分布在北美洲和亚欧大陆的北部边缘,格林兰沿海一带和北极的一些岛屿。植被以苔原景观为主,包括苔藓、地衣、小灌木等耐寒植物。北极寒带气候的特征是全年皆冬,做暖月10摄氏度等温线和针叶林带分界;最暖月0摄氏度和冰冠区分界。气温低,蒸发微弱,相对湿度高,沿岸多云雾。该区降水量在250毫米以下,多为降雪。部分冰雪在夏季能短期溶解,降水量偏低。土壤为冰沼土,酸性,不利农耕。居民主要是爱斯基摩人,也称因纽特人。南极型极地气候(冰原气候):南极寒带气候也称冰原气候、冰漠气候。主要包括南极大陆,也包括北极的格林兰岛部分和其它一些岛屿。地理景观为冰原景观,无植被。南极寒带气候的气候特征是全年严寒,各月平均气温在0摄氏度以下,是冰洋气团的源地,曾出现过全球最低温。南极寒带气候区的年降水量约100毫米,都是降雪。雪量不多,但因常年累积,形成深厚的冰层。风速约在25米每秒以上,最大超过100米每秒,吹雪称为雪暴。本区无定居居民,只有少数科学考察研究者,代表动物为企鹅。南极的大气层有臭氧空洞,是严重的环境问题。&南极气候成因:南北极气温对比:南北极地区特征比较:北极:北极是指北纬66度34分(北极圈)以北的广大区域,也叫做北极地区。北极地区包括极区北冰洋、边缘陆地海岸带及岛屿、北极苔原和最外侧的泰加林带。如果以北极圈作为北极的边界,北极地区的总面积是2100万k㎡,其中陆地部分占800万k㎡。南极:南极,是人类最后到达的大陆,也叫“第七大陆。”位于地球最南端,土地几乎都在南极圈内,四周濒太平洋、印度洋和大西洋。是世界上地理纬度最高的一个洲。面积:总面积约1400万平方千米,约占世界陆地总面积的9.4%。由围绕南极的大陆、陆缘冰和岛屿组成,其中大陆面积1239.3万平方千米,陆缘冰面积158.2万平方千米,岛屿面积7.6万平方千米。南北极地图上方向判读方法:1.在北极上,地球自转自西向东逆时针方向;2.在南极上,地球自转自西向东顺时针方向。我国在极地建立的科考站:1.1985年我国建立的第一个南极科考站——长城站;2.1989年建立中山站;3.2004年首个北极考察站——黄河站;3.2009年南极内陆考察站——昆仑站。北极地区地形图:南极地形剖面图:南极丰富的矿产资源:南极地区的矿产资源极为丰富。据已查明的资源分布来看,煤、铁和石油的储量为世界第一,其它的矿产资源还正在勘测过程中。在南极地区,可望发现更多更丰富的矿产资源,为人类利用这些资源提出科学依据。南极大陆二叠纪煤层主要分布于南极洲的冰盖下面,储量约为5000亿吨。铁矿是南极最富有的矿产资源之一。在南极大陆,主要分布在东南极洲。据科学家们勘测,在查尔斯王子山脉南部的地层内,在晚太古至元古代,有一条厚度达400米,长120~180公里,宽5~10公里的条带状富磁铁矿岩层,矿石平均品位达32%~58%,是具有工业开采价值的富铁矿床,初步估算其蕴藏量可供全世界开发利用200年,是当今世界最大的富铁矿藏。有趣的是,如果沿着南极洲查尔斯王子山脉所在的经度范围(北纬60度至北纬70度)一直如同被往北走,几乎在相同经度差不多对称的北极地区,又是一片世界级大铁矿地区。南极地区的石油储存量约500亿~1000亿桶,天然气储量约为3亿立方米。南极的罗斯海、威德尔海和别林斯高晋海以及南极大陆架均是油田和天然气的主要产地。
发现相似题
与“世界上跨经度最大的大洲是[]A.亚洲B.北美洲C.南极洲D.欧洲-八年级..”考查相似的试题有:
191775142608139923503164448443397

我要回帖

更多关于 根据 经纬度 排序 的文章

 

随机推荐