python各类经纬度转换的实例代码

yizhihongxing

下面是关于“python各类经纬度转换的实例代码”的详细攻略:

什么是经纬度?

经纬度是地球上的一种地理坐标系,它由经度和纬度两个值组成。经度指东西向的线,是指垂直于地球的子午线,而纬度指南北向的线,是指环绕地球的赤道。人们通常用度数来表示经纬度,经度的取值范围为-180度到180度,而纬度的取值范围为-90度到90度。

经纬度的转换

度分秒转换为小数

在实际的应用中,常常需要把度分秒的表示方式转换为小数的形式。下面是一个将度分秒转换为小数的示例代码:

def dms_to_decimal(d, m, s):
    decimal = d + float(m)/60 + float(s)/3600
    return decimal

其中,d表示度,m表示分,s表示秒。这个函数会返回一个表示为小数的经度或者纬度的值。例如:如果将东经116度30分20秒转换为小数,可以这样调用:

>>> dms_to_decimal(116, 30, 20)
116.50555555555556

WGS84坐标系与火星坐标系的转换

WGS84坐标系是GPS定位系统所采用的坐标系,而火星坐标系则是中国国内的一种常用坐标系,它通常会比WGS84坐标系提供更精确的定位结果。下面是一个将WGS84坐标系转换为火星坐标系的示例代码:

from math import pi, sin, cos, sqrt, atan2

def transform_wgs84_to_gcj02(wgsLon, wgsLat):
    a = 6378245.0
    ee = 0.00669342162296594323

    def transform(latitude, longitude):
        dLat = transformLat(longitude - 105.0, latitude - 35.0)
        dLon = transformLon(longitude - 105.0, latitude - 35.0)
        radLat = latitude / 180.0 * pi
        magic = sin(radLat)
        magic = 1 - ee * magic * magic
        sqrtMagic = sqrt(magic)
        dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi)
        dLon = (dLon * 180.0) / (a / sqrtMagic * cos(radLat) * pi)
        return (latitude + dLat, longitude + dLon)

    def transformLat(x, y):
        ret = (-100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(abs(x))) * sin(6.0 * pi * x) + (
                    300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(abs(x))) * sin(
            2.0 * pi * x)
        ret += (0.2 * sqrt(abs(y)) * sin(pi * y) + 0.2 * y * sin(5.0 * pi * y)) * (y > 0.0)
        ret += (
                    -100.0 + 2.0 * x - 3.0 * y + 0.2 * y * y + 0.1 * x * y - 0.2 * sqrt(abs(x))) * sin(
            6.0 * pi * x) + (
                           -300.0 + x - 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(abs(x))) * sin(
                       2.0 * pi * x)
        ret += (-0.2 * sqrt(abs(y)) * sin(pi * y) + 0.2 * y * sin(5.0 * pi * y)) * (y < 0.0)
        return ret

    def transformLon(x, y):
        ret = (300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(abs(x))) * cos(2.0 * pi * y) + (
                    -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(abs(x))) * cos(
            6.0 * pi * y)
        ret += (-0.2 * sqrt(abs(x)) * cos(pi * x) + 0.2 * x * cos(5.0 * pi * x) + 0.2 * x * (x > 0.0)) * (x > 0.0)
        ret += (0.2 * sqrt(abs(x)) * cos(pi * x) + 0.2 * x * cos(5.0 * pi * x) + 0.2 * x * (x < 0.0)) * (x < 0.0)
        return ret

    return transform(wgsLat, wgsLon)

该函数的返回值是一个二元组,分别表示火星坐标系下的经度和纬度。例如:如果将东经116.384833和北纬39.908458转换为火星坐标系,可以这样调用:

>>> transform_wgs84_to_gcj02(116.384833, 39.908458)
(116.39153369509492, 39.91443525608911)

总结

本文主要介绍了经纬度的相关知识,以及如何在Python中实现经纬度的转换。其中包括了将度分秒转换为小数,以及将WGS84坐标系转换为火星坐标系的示例代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python各类经纬度转换的实例代码 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python xmltodict模块安装及代码实例

    下面是“Python xmltodict模块安装及代码实例”的完整攻略。 Python xmltodict模块安装及代码实例 什么是 xmltodict? xmltodict 是 Python 的一个模块,它可以将 XML 格式的文本转换成 Python 中的字典格式。相较于传统解析 XML 文件的方式,xmltodict 可以将 XML 文件解析得更加简洁…

    python 2023年6月3日
    00
  • python的依赖管理的实现

    Python的依赖管理是指在编写Python代码时,为了使代码可以调用其他Python库(例如requests、numpy等)时,需要安装和管理依赖库的过程。Python中常用的依赖管理工具有pip、conda等。 使用pip管理依赖 安装pip 使用pip之前,首先需要安装pip。在命令行中输入以下命令: $ sudo apt-get install py…

    python 2023年5月14日
    00
  • 在Python中用4d数组的系数评估x、y和z的笛卡尔乘积上的3-D切比雪夫级数

    下面是在Python中使用4d数组的系数评估x、y和z的笛卡尔乘积上的3-D切比雪夫级数的完整攻略。 背景知识 在计算机科学中,切比雪夫级数用于描述函数在区间上的收敛性。在三维情况下,切比雪夫级数被定义为: $${\displaystyle f_{n}(x,y,z)=\sum {k{1}=0}^{n}\sum {k{2}=0}^{n-k_{1}}\sum {…

    python-answer 2023年3月25日
    00
  • python获取指定网页上所有超链接的方法

    获取指定网页上所有超链接的方法可以通过使用Python中的第三方库BeautifulSoup和requests来实现。具体步骤如下: 使用requests库获取网页的HTML源代码 代码示例: import requests url = ‘https://example.com’ response = requests.get(url) html = res…

    python 2023年6月3日
    00
  • Python数据可视化 pyecharts实现各种统计图表过程详解

    Python数据可视化pyecharts实现各种统计图表过程详解 数据可视化是数据分析中非常重要的一部分,它可以帮助我们更好地理解和分析数据。Python提供了一些强大的数据可视化工具,其中pyecharts是一个非常流行的工具,它可以帮助我们轻松地创建各种统计图表。本文将详细讲解如何使用pyecharts实现各种统计图表。 安装pyecharts 在使用p…

    python 2023年5月15日
    00
  • python办公自动化(Excel)的实例教程

    Python办公自动化(Excel)的实例教程 简介 Python办公自动化(Excel)是指使用Python代码操作Excel表格,实现自动化处理Excel数据的过程。它可以使我们避免手动操作Excel的繁琐,提高工作效率。本文将介绍如何使用Python对Excel表格进行操作。 模块安装 使用Python对Excel表格进行操作需要安装openpyxl和…

    python 2023年5月13日
    00
  • Python使用Beautiful Soup实现解析网页

    Python使用Beautiful Soup实现解析网页 本文将介绍如何使用Python的Beautiful Soup库解析网页。我们将使用Beautiful Soup库解析HTML文档,并使用find()和find_all()方法查找元素。 解析HTML文档 以下是一个示例代码,演示如何使用Python的Beautiful Soup库解析HTML文档: f…

    python 2023年5月15日
    00
  • 如何在python中正确使用函数及其语法?

    【问题标题】:How to properly use a function and it’s syntax in python?如何在python中正确使用函数及其语法? 【发布时间】:2023-04-04 20:01:01 【问题描述】: 目前我正在开发一个基本的文本游戏,您可以选择与狼战斗的武器,从字典中驱动谁的健康,您可以选择的武器的统计数据也是如此。…

    Python开发 2023年4月6日
    00
合作推广
合作推广
分享本页
返回顶部