经纬度与距离的换算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经纬度与距离的换算相关的知识,希望对你有一定的参考价值。
A点为北纬40°48′6〃经度120°43′39〃
B点为北纬40°47′45〃经度120°44′17〃 这两点间的距离,我在这里非常的感谢了,最好的换算的方法一同告知,再次谢谢了
经纬度与距离的换算有以下两种方法:
1、二维转换
二维转换方法是将平面坐标(东坐标和北坐标)从一个坐标系统转换到另一个坐标系统。在转换时不计算高程参数。该转换方法需要确定4个参数(2个向东和向北的平移参数,1个旋转参数和1个比例因子)。如果要保持GPS测量结果独立并且有地方地图投影的信息,那么采用三维转换方法最合适。
2、三维转换
该方法基本操作步骤是利用公共点,也就是同时具有WGS84直角坐标和地方坐标的直角坐标的点位,一般需要3个以上重合点,通过布尔莎模型(或其他模型)进行计算,得到从一个系统转换到另一个系统中的平移参数、旋转参数和比例因子。
坐标转换分类
1、大地坐标(BLH)对平面直角坐标(XYZ)
常规的转换应先确定转换参数,即椭球参数、分带标准(3度,6度)和中央子午线的经度。椭球参数就是指平面直角坐标系采用什么样的椭球基准,对应有不同的长短轴及扁率。画到直角坐标系可以写为(x+z*acosθ,y+z*asinθ)a,θ为参数。
2、北京54全国80及WGS84坐标系的相互转换
一种国际上采用的地心坐标系。坐标原点为地球质心,其地心空间直角坐标系的Z轴指向BIH (国际时间)1984.O定义的协议地球极(CTP)方向,X轴指向BIH 1984.0的零子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系,称为1984年世界大地坐标系统。
3、任意两空间坐标系的转换
由于测量坐标系和施工坐标系采用不同的标准,要进行精确转换,必须知道至少3个重合点(即为在两坐标系中坐标均为已知的点。采用布尔莎模型进行求解。
参考技术AD = arc cos((sin北纬A×sin北纬B)+(cos北纬A×cos北纬B×cosAB两地经度差))×地球平均半径 (Shormin) 其中地球平均半径为6371.004 km,D的单位为km
在经纬网图上,可以根据经纬度量算两点之间的距离。全球各地纬度1°的间隔长度都相等(因为所有经线的长度都相等),大约是111km/1°。赤道上经度1°对应在地面上的弧长大约也是111km。
由于各纬线从赤道向两极递减,60°纬线上的长度为赤道上的一半,所以在各纬线上经度差1°的弧长就不相等。在同一条纬线上(假设此纬线的纬度为α)经度1°对应的实际弧长大约为111cosαkm。
因此,只要知道了任意两地间的纬度差,或者是赤道上任何两地的经度差,就可以计算它们之间的实际距离。
两地间最近距离的判断:若两地经度差等于180o,则过两地的大圆为经线圈,两地最近距离为大圆中过两极点的劣弧;若两地经度差不等于180o,则过两地的大圆不是经线圈,而与经线圈斜交,两地最近距离不过极点,而是过两极地区。
重要的纬线:
北极圈(66°33' 38" N)
北回归线(23°26' 22" N)
赤道(0°N)
南回归线(23° 26' 22" S)
南极圈(66°33' 38" S)
长度不同(离赤道越远的纬线越短)
东经正数,西经为负数。经度是地球上一个地点离一根被称为本初子午线的南北方向走线以东或以西的度数。本初子午线的经度是0°,地球上其它地点的经度是向东到180°或向西到180°。不像纬度有赤道作为自然的起点,经度没有自然的起点,做为本初子午线的那条线是人选出来的。
英国的制图学家使用经过伦敦格林尼治天文台的子午线作为起点,过去其它国家或人也使用过其它的子午线做起点,比如罗马、哥本哈根、耶路撒冷、圣彼德堡、比萨、巴黎和费城等。
在1884年的国际本初子午线大会上格林尼治的子午线被正式定为经度的起点。东经180°即西经180°,约等同于国际换日线,国际换日线的两边,日期相差一日。
参考技术B 回答你好,
static double Rc = 6378137; // 赤道半径
static double Rj = 6356725; // 极半径
希望以上回答对您有所帮助~ 如果您对我的回答满意的话,麻烦给个赞哦~
参考技术C1、在纬度相等的情况下:
经度每隔0.00001度,距离相差约1米;
每隔0.0001度,距离相差约10米;
每隔0.001度,距离相差约100米;
每隔0.01度,距离相差约1000米;
每隔0.1度,距离相差约10000米。
2、在经度相等的情况下:
纬度每隔0.00001度,距离相差约1.1米;
每隔0.0001度,距离相差约11米;
每隔0.001度,距离相差约111米;
每隔0.01度,距离相差约1113米;
每隔0.1度,距离相差约11132米。
计算方法
1、先算两分日
比如在中国某地,杆影最短时是中午13点20分,且杆长与影长之比为1,则可知该地是北纬45°(tgα=1),东经100°(从120°里1小时减15°,4分钟减1°)杆长与影长之比需查表求α,这里用了特殊角。
2、再算两至日经度的算法不变 纬度在北半球冬至α+23.5°,夏至α-23.5°在任意一天加减修正值即可。
3、修正值算法:就是距两分或两至日的天数差乘以94/365. 比如2013年2月17日,2013年3月22日春分差33天,即太阳直射点在南纬。
参考技术D 在经纬网图上,可以根据经纬度量算两点之间的距离。全球各地纬度1°的间隔长度都相等(因为所有经线的长度都相等),大约是111km/1°。赤道上经度1°对应在地面上的弧长大约也是111km。由于各纬线从赤道向两极递减,60°纬线上的长度为赤道上的一半,所以在各纬线上经度差1°的弧长就不相等。在同一条纬线上(假设此纬线的纬度为α)经度1°对应的实际弧长大约为111cosαkm。因此,只要知道了任意两地间的纬度差,或者是赤道上任何两地的经度差,就可以计算它们之间的实际距离。两地间最近距离的判断:若两地经度差等于180o,则过两地的大圆为经线圈,两地最近距离为大圆中过两极点的劣弧;若两地经度差不等于180o,则过两地的大圆不是经线圈,而与经线圈斜交,两地最近距离不过极点,而是过两极地区。也可以下载下面网页上提供的软件:
http://edu.itbulo.com/200604/93855.htm
我查了,是1.1公里!本回答被提问者采纳
Python调用高德地图API实现经纬度换算地图可视化
前地图可视化的工具和函数比较多,但是在不知道相关地点经纬度的情况下,通过python调用高德地图API实现经纬度换算,并且直接在高德地图新推出的轻量级可视化平台上实现一键式地图可视化,这其中需要申请密钥、批量经纬度换算、地图平台可视化操作等等。
初始数据里面有数据的省、市、县、街道、门牌号等详细地址,但是这类的详细地址是无法利用现有的函数做可视化分析的,所以需要python调用高德地图的API查询经纬度。
第一步:注册密钥
在高德地图API上相关位置的展现是以经纬度为基础的,为了批量获取位置的经纬度,我们按接口调用的要求先注册高德地图API以获取免费的密钥,这样才能使用该API。地址:https://lbs.amap.com/ ,在注册成功后,在应用管理里面点击“创建新应用”,填写相关信息,提交后在key栏即可获得你的密钥。
第二步:构造url参数获取经纬度
得到密钥后,可以在高德地图web服务API下的地理编码接口获取经纬度,地理编码/逆地理编码 API 是通过 HTTP/HTTPS 协议访问远程服务的接口,提供结构化地址与经纬度之间的相互转化的能力。我们需要参考接口参数文档发起HTTP/HTTPS请求,第一步申请的 Key 需作为必填参数一同发送。接收请求返回的数据(默认JSON格式),参考返回参数文档解析数据。
-
地理编码 API 服务地址
https://restapi.amap.com/v3/geocode/geo?parameters
parameters代表的参数包括必填参数和可选参数。所有参数均使用和号字符(&)进行分隔。
这里我只填了必要的参数,key和address两个参数,key是密钥参数。address是需要转换的地址。网页中有相关说明,根据示例URL,采用python3写出如下函数:
1import pandas as pd
2import requests
3from requests.exceptions import ReadTimeout, ConnectTimeout
4import csv
5
6
7def transform(geo):
8 parameters = { address : geo, key : c69bd09bde2e2117eff53df9b89750a8 }
9 base = https://restapi.amap.com/v3/geocode/geo
10 loc = 0
11 try:
12 response = requests.get(base, parameters, timeout=2)
13 if response.status_code == 200:
14 answer = response.json()
15 loc = answer[ location ]
16 else:
17 pass
18 except (ReadTimeout, ConnectTimeout):
19 # ConnectTimeout指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。ReadTimeout指的是建立连接后从服务器读取到可用资源所用的时间。
20 pass
21 return loc
22
23
24if __name__ == "__main__":
25 loc_data = pd.read_csv("../kfc_china_stores.csv")
26 raw_loc = loc_data["city"] + loc_data["address_raw"]
27 with open("d:/kendeji.csv", "a", newline= ) as csvfile:
28 # a表示追加写入,w表示写入
29 writer = csv.writer(csvfile)
30 # 先写入columns_name
31 # writer.writerow(["city", "geo_loc"])
32 i = 0
33 j = 0
34 for item in raw_loc[j:]:
35 if isinstance(raw_loc[i + j], str):
36 print([item, transform(item)])
37 # 表处于关闭状态才能写入或者追加写入
38 writer.writerow([item, transform(item)])
39 else:
40 writer.writerow([raw_loc[i+j], 0])
41 i = i + 1
这样我们就批量得到了经纬度,本来是在高德平台上是需要自己去调试JS代码来生成地图的,但是高德地图已经开发了轻量级的可视化平台,给没学过JS的我留了条活路,接下来就利用高德地图可视化平台直接一键式生成地图文件。
在个人的控制台里面有个数据可视化窗口,直接一步步创建自己的可视化项目即
在数据里面设置点的颜色、透明度和图例等信息,组件里面可以添加标题、动态播放器等,还可以选择地图背景。最后在右上角点击分享就可以获得该图的链接、代码或者截图。开发者可利用代码将可视化项目嵌入到自己的网页
此文花费了不少功夫,赞赏、点赞、转发都是对作者的认可和支持。
以上是关于经纬度与距离的换算的主要内容,如果未能解决你的问题,请参考以下文章