1. 程式人生 > >[Python] 座標轉換|火星座標與WGS84

[Python] 座標轉換|火星座標與WGS84

# -*- coding: utf-8 -*-
import json
import math

x_pi = 3.14159265358979324 * 3000.0 / 180.0
pi = 3.1415926535897932384626  # π
a = 6378245.0  # 長半軸
ee = 0.00669342162296594323  # 扁率

def wgs84togcj02(lng, lat):
    """
    WGS84轉GCJ02(火星座標系)
    :param lng:WGS84座標系的經度
    :param lat:WGS84座標系的緯度
    :return:
    """
if out_of_china(lng, lat): # 判斷是否在國內 return lng, lat dlat = transformlat(lng - 105.0, lat - 35.0) dlng = transformlng(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 [mglng, mglat] def gcj02towgs84(lng, lat): """ GCJ02(火星座標系)轉GPS84 :param lng:火星座標系的經度 :param lat:火星座標系緯度 :return: """
if out_of_china(lng, lat): return lng, lat dlat = transformlat(lng - 105.0, lat - 35.0) dlng = transformlng(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 transformlat(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 ret def transformlng(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 ret def out_of_china(lng, lat): """ 判斷是否在國內,不在國內不做偏移 :param lng: :param lat: :return: """ if lng < 72.004 or lng > 137.8347: return True if lat < 0.8293 or lat > 55.8271: return True return False

相關推薦

[Python] 座標轉換|火星座標WGS84

# -*- coding: utf-8 -*- import json import math x_pi = 3.14159265358979324 * 3000.0 / 180.0 pi = 3.1415926535897932384626 # π a =

QT:百度座標(BD09)、國測局座標火星座標,GCJ02)、和WGS84座標系之間的轉換(JS版程式碼)

/** * Created by Wandergis on 2015/7/8. * 提供了百度座標(BD09)、國測局座標(火星座標,GCJ02)、和WGS84座標系之間的轉換 */ //定義一些常量 var x_PI = 3.14159265358979324 * 3000.0 / 18

java版座標系轉換(火星座標、GPS座標、百度座標)

public class Gps {public double wgLat;public double wgLon;public Gps(double wgLat, double wgLon) {setWgLat(wgLat);setWgLon(wgLon);}public double getWg

座標轉換C#(Gcj02、wgs84、bd09互轉)

using System; using System.Collections.Generic; using System.Text; namespace GMap.NET.Util { public static class ConvertGPS { priva

第一章座標轉換座標轉換概述2

這節我們從巨集觀上介紹一下座標轉換。上節我們介紹了座標分為靜態座標和動態座標,靜態座標可以理解為我們常說的參心座標,動態座標可以理解為地心座標。 1、靜態座標轉換:兩組靜態座標之間無非就是旋轉、平移、和縮放。因此可以用同名點和轉換模型進行區域座標的轉換。常用的典型轉換模型有布林沙七引數轉換模

第一章座標轉換座標轉換概述

最近接觸到一些座標轉換的專案,其實之前也總接觸到座標轉換的專案,但是由於我辦公室有一個座標轉換大神,不會了就去問他,他都會細心解答,人非常的nice。最近回想起來,發現不能總依賴於別人,自己得把大學的知識總結和回顧一下,至少做到心中有數,不能給大學老師丟臉呀,遂準備寫一寫關於大地座標轉換的知

python應用例項:座標轉換——基於布林莎模型,可實現BJ54座標系/GSC2000座標系/WGS84等各種地心直角座標系的轉換

博主準研究僧一枚,假期在老師指導下接觸專案。本博文可作為座標轉換,特別是布林莎七引數法的學習資料。其python原始碼註釋充分,也可作為python的學習專案。程式UI介面如下,由於是自用程式,博主對美化UI不感興趣,ui部分原始碼註釋充分,顏控可自行修改調整。PS:克總信徒

火星座標地球座標之間的相互轉換的工具類

火星座標是個啥: 是一種國家保密外掛,也叫做加密外掛或者加偏或者SM模組,其實就是對真實座標系統進行人為的加偏處理,按照特殊的演算法,將真實的座標加密成虛假的座標,而這個加偏並不是線性的加偏,所以各地的偏移情況都會有所不同。而加密後的座標也常被人稱為火星

位置資訊座標轉換(GCJ02座標WGS84座標、bd09座標之間的轉換

       現在幾乎每一個App都會收集使用者位置資訊,App得到的座標大多是通過高德地圖等SDK獲取的,當使用這些座標進行webGIS視覺化的時候會發現各種偏離狀況,座標不對,疊加錯位。這是由於不同SDK獲取到的座標可能屬於不同座標系,想要針對不同地圖

[Xcode10 實際操作]八、網路多執行緒-(14)使用網址會話物件URLSession將地理座標轉換為地名

本文將演示如果通過網址會話物件,將地理座標轉換為地名。 網址會話物件URLSession具有在後臺上傳和下載、暫停和恢復網路操作、豐富的代理模式等優點。 在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】 1 import UIKit 2 3 clas

ArcGIS中座標轉換投影變換

1 、柵格資料的投影變換 1  1.1定義投影 1  1.2檢視投影 3  1.2.1 在ArcCatalog中檢視資料的投影資訊 3  1.2.2在ArcMap中檢視資料的投影資訊 3  1.3投影變換 4  2、向量資料的投影變換 6  2.1 定義投影 6  2.2檢視

proj4,七引數座標轉換原理

一、wgs84,地心座標系(地心座標系,是在大地體內建立的O-XYZ座標系。原點O設在大地的質心,通常分為地心空間直角座標系(以x,y,z為其座標元素)和地心大地座標系(以B,L,H為其座標元素)),可以與1954北京座標系或1980西安座標系等參心座標系(在參

在MFC中繪製地圖以及地理座標螢幕座標轉換詳解(附工程原始碼)

在MFC中繪圖時,因為都是以畫素為單位的,所以我們只能以整數作為引數。如果我們想要把一幅地圖資料繪製在MFC視窗中,地圖的座標資料肯定的含有小數位的,這樣我們就不能直接在MFC中繪製地圖了,這就涉及到地理座標向螢幕座標的轉換。 1、地理座標轉螢幕座標 首先我們看一張圖(圖

WGS84,GCJ02, BD09座標轉換

public class Gps { private double wgLat; private double wgLon; public Gps(double wgLat, double wgLon) { setWgLat(wgLat); setWgL

QT:WGS84,GCJ02, BD09座標轉換

/** * 各地圖API座標系統比較與轉換; * WGS84座標系:即地球座標系,國際上通用的座標系。裝置一般包含GPS晶片或者北斗晶片獲取的經緯度為WGS84地理座標系, * 谷歌地圖採用的是WGS84地理座標系(中國範圍除外); * GCJ02座標系:即火星座標系,是由中國國家測繪局制訂

PHP+百度地圖API+JAVASCRIPT實現GPS座標百度座標轉換的例項

<!--小幅的座標轉換點位程式--> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=U

GDAL python讀取shp進行影像投影座標和地理座標轉換

之前只在網上找到了使用gdal進行tif格式影像的投影座標與地理座標轉換的程式碼,但沒有專門針對shp格式的資料的教程。正巧現在需要用mongodb做向量入庫,建立空間索引(2dshere)時必須用經緯度而不是投影座標,就參考別人的程式碼做了一些修改,實現了sh

地球座標-火星座標-百度座標及之間的轉換演算法 C#

WGS84 :World Geodetic System 1984,是為GPS 全球定位系統 使用而建立的座標系統。通過遍佈世界的 衛星觀測站 觀測到的座標建立,其初次WGS84的精度為1-2m,在1994年1月2日,通過10個觀測站在GPS測量方法上改正,得到了WGS84(G730),G表示由GPS測量得到

OpenLayers中Map物件的投影引數初始化座標轉換

OpenLayers中Map中預設使用的經緯度座標系(EPSG:4326),如果我們地圖 圖片採用了墨卡託投影 時,我們就需要在初始化Map物件時對相關的引數進行配置,以使用正確的投影方式; 下面程式碼演示了這個使用:SimpleMap = OpenLayers.Class(OpenLayers.Map,{

WGS84、GCJ02、 BD09座標轉換------QGIS+GeoHey Toolbox

處理向量資料你一定會遇到以下問題:     WGS84     GCJ02     BD09     這三種座標資料如何相互轉換 今天就為大家介紹一種方法,利用QGIS,對沒錯就是它。 1.QGIS軟體安裝 1.首先下載QGIS2.18版,最新的3.