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

下面是关于“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日

相关文章

  • Django框架安装及项目创建过程解析

    Django框架安装及项目创建过程解析 Django是一个基于Python的Web框架,它提供了一系列工具和库,帮助开发者快速构建高质量的Web应用程序。本文将详细讲解Django框架的安装和项目创建过程,包括Django的安装、项目创建、应用程序创建和运行等内容,并提供两个示例。 Django的安装 在安装Django之前,我们需要先安装Python。Dj…

    python 2023年5月15日
    00
  • 详解PyQt5 GUI 接收UDP数据并动态绘图的过程(多线程间信号传递)

    讲解 “详解 PyQt5 GUI 接收 UDP 数据并动态绘图的过程(多线程间信号传递)” 的攻略如下: 简介 本攻略将重点介绍如何使用 PyQt5 进行 GUI 开发,并用多线程的方式实现 UDP 数据的接收、实时绘图等功能。攻略中将使用两个示例来说明多线程间信号传递的过程。 示例一:UDP 数据接收 UDP 数据接收示例将介绍如何通过 PyQt5 的多线…

    python 2023年5月19日
    00
  • Python用二分法求平方根的案例

    下面是详细的Python用二分法求平方根的攻略。 算法思路 选择一个左端点 left 和一个右端点 right(可以是任意两个正数,满足 left * left < num < right * right),并计算它们的中点 mid = (left + right) / 2。 如果 mid * mid == num,则 mid 就是 num 的平…

    python 2023年6月3日
    00
  • 在Python中操作字符串之replace()方法的使用

    针对“在Python中操作字符串之replace()方法的使用”这个话题,我们可以提供以下攻略: 1. replace()方法的使用 replace()方法是Python中字符串类型的内置方法之一。该方法的作用是:替换字符串中指定的子字符串。其语法格式如下: string.replace(old, new[, count]) 其中: string表示要进行替…

    python 2023年6月5日
    00
  • Python常用配置文件ini、json、yaml读写总结

    下面是Python常用配置文件ini、json、yaml读写总结的详细攻略。 1. 概述 在编写Python程序时,有时需要读取一些配置文件来获取程序执行需要的参数和数据。常见的配置文件格式有ini、json和yaml。在Python中,我们可以使用标准库或第三方库来读取和写入这些文件。本文将介绍如何使用Python标准库和第三方库来读写这三种常见的配置文件…

    python 2023年6月3日
    00
  • 使用Pyinstaller打包exe文件详细图文教程

    使用Pyinstaller打包exe文件详细图文教程 什么是Pyinstaller? Pyinstaller是一个用于在Windows、Linux、Mac OS X和FreeBSD上打包Python程序的工具。 它可以将Python代码转换为独立的可执行文件,跨平台使用,不需要安装Python解释器。 Pyinstaller打包exe文件的步骤 以下是使用P…

    python 2023年5月13日
    00
  • python进程和线程用法知识点总结

    Python进程和线程用法知识点总结 什么是进程和线程? 在操作系统中,进程是一个程序执行时的实例,拥有独立的内存空间和系统资源,线程是程序执行的最小单位,属于进程,多个线程可以共享一个进程的资源。 进程和线程的优点和缺点 进程的优点 稳定性高,一个进程崩溃不会影响其他进程的稳定性; 安全性高,进程之间是独立的,一个进程不能访问其他进程的资源; 可以利用多核…

    python 2023年5月19日
    00
  • Python 斯皮尔曼等级顺序相关度

    Python 斯皮尔曼等级顺序相关度(Spearman’s Rank Correlation Coefficient)是一种衡量两个变量之间相关度的统计方法,它用于衡量两个变量之间的单调关系,即当一个变量下降时,另一个变量也下降,反之亦然。它对于异常值不太敏感,具有较好的鲁棒性和可靠性,适用于非线性数据和非正态分布数据的相关性分析。 下面是Python中使用…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部