[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.