python3 BD09ll转换WGS84坐标系,入门教程

网友投稿 305 2022-08-25

python3 BD09ll转换WGS84坐标系,入门教程

最近最近试了一下一个网站的代码,链接为:​​pandas as pdimport mathx_pi = 3.14159265358979324 * 3000.0 / 180.0pi = 3.1415926535897932384626a = 6378245.0ee = 0.00669342162296594323def out_of_china(lng, lat): return not (lng > 73.66 and lng < 135.05 and lat > 3.86 and lat < 53.55)def _lat(lng, lat): ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + \ 0.1 * lng * lat + 0.2 * math.sqrt(math.fabs(lng)) ret += (20.0 * math.sin(6.0 * lng * pi) + 20.0 * math.sin(2.0 * lng * pi)) * 2.0 / 3.0 ret += (20.0 * math.sin(lat * pi) + 40.0 * math.sin(lat / 3.0 * pi)) * 2.0 / 3.0 ret += (160.0 * math.sin(lat / 12.0 * pi) + 320 * math.sin(lat * pi / 30.0)) * 2.0 / 3.0 return retdef _lng(lng, lat): ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + \ 0.1 * lng * lat + 0.1 * math.sqrt(math.fabs(lng)) ret += (20.0 * math.sin(6.0 * lng * pi) + 20.0 * math.sin(2.0 * lng * pi)) * 2.0 / 3.0 ret += (20.0 * math.sin(lng * pi) + 40.0 * math.sin(lng / 3.0 * pi)) * 2.0 / 3.0 ret += (150.0 * math.sin(lng / 12.0 * pi) + 300.0 * math.sin(lng / 30.0 * pi)) * 2.0 / 3.0 return retdef bd09_to_gcj02(bd_lon, bd_lat): x = bd_lon - 0.0065 y = bd_lat - 0.006 z = math.sqrt(x * x + y * y) - 0.00002 * math.sin(y * x_pi) theta = math.atan2(y, x) - 0.000003 * math.cos(x * x_pi) gg_lng = z * math.cos(theta) gg_lat = z * math.sin(theta) return [gg_lng, gg_lat]def gcj02_to_wgs84(lng, lat): if out_of_china(lng, lat): return [lng, lat] dlat = _lat(lng - 105.0, lat - 35.0) dlng = _lng(lng - 105.0, lat - 35.0) radlat = lat / 180.0 * pi magic = math.sin(radlat) magic = 1 - ee * magic * magic sqrtmagic = math.sqrt(magic) dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi) dlng = (dlng * 180.0) / (a / sqrtmagic * math.cos(radlat) * pi) mglat = lat + dlat mglng = lng + dlng return [lng * 2 - mglng, lat * 2 - mglat]def bd09_to_wgs84(bd_lon, bd_lat): lon, lat = bd09_to_gcj02(bd_lon, bd_lat) return gcj02_to_wgs84(lon, lat)

调用代码为(test.py):

import pandas as pdfrom demo import bd09_to_wgs84data=pd.read_excel('data.xls')def process(x): bd_lon=float(x['bd_lon']) bd_lat=float(x['bd_lat'].replace(',',''))# res=x['bd_lon']+x['bd_lon'] res=bd09_to_wgs84(bd_lon,bd_lat) return resdata["wgs84"]=data[["bd_lon","bd_lat"]].apply(lambda x:process(x),axis=1)data.head()data.to_csv('data_demo.csv')

输入数据格式为:

输出格式为:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:乘冬奥东风,体育产业迎接新营销时代!
下一篇:mac pyaudio Reason: image not found
相关文章

 发表评论

暂时没有评论,来抢沙发吧~