IOS火星座標轉換

2021-07-09 13:03:53 字數 4469 閱讀 7680

火星座標系統

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

火星座標系統

。所有的電子地圖、導航裝置,都需要加入國家保密外掛程式。第一步,地圖公司測繪地圖,測繪完成後,送到國家測繪局,將真實座標的電子地圖,加密成「火星座標」,這樣的地圖才是可以出版和發布的,然後才可以讓gps公司處理。第二步,所有的gps公司,只要需要汽車導航的,需要用到導航電子地圖的,都需要在軟體中加入國家保密演算法,將com口讀出來的真實的座標訊號,加密轉換成國家要求的保密的座標。這樣,gps導航儀和導航電子地圖就可以完全匹配,gps也就可以正常工作了。

#import #import @inte***ce zslocationconverter : nsobject

/** * @brief 世界標準地理座標(wgs-84) 轉換成 中國國測局地理座標(gcj-02)《火星座標》

* * ####只在中國大陸的範圍的座標有效,以外直接返回世界標準座標

* * @param location 世界標準地理座標(wgs-84)

* * @return 中國國測局地理座標(gcj-02)《火星座標》

*/+ (cllocationcoordinate2d)wgs84togcj02:(cllocationcoordinate2d)location;

/** * @brief 中國國測局地理座標(gcj-02) 轉換成 世界標準地理座標(wgs-84)

* * ####此介面有1-2公尺左右的誤差,需要精確定位情景慎用

* * @param location 中國國測局地理座標(gcj-02)

* * @return 世界標準地理座標(wgs-84)

*/+ (cllocationcoordinate2d)gcj02towgs84:(cllocationcoordinate2d)location;

/** *

* @param location 世界標準地理座標(wgs-84)

* */

+ (cllocationcoordinate2d)wgs84tobd09:(cllocationcoordinate2d)location;

/** *

* @param location 中國國測局地理座標(gcj-02)《火星座標》

* */

+ (cllocationcoordinate2d)gcj02tobd09:(cllocationcoordinate2d)location;

/** *

* * @return 中國國測局地理座標(gcj-02)《火星座標》

*/+ (cllocationcoordinate2d)bd09togcj02:(cllocationcoordinate2d)location;

/** *

* ####此介面有1-2公尺左右的誤差,需要精確定位情景慎用

* ** @return 世界標準地理座標(wgs-84)

*/+ (cllocationcoordinate2d)bd09towgs84:(cllocationcoordinate2d)location;

@end

#import "zslocationconverter.h"

#define lat_offset_0(x,y) -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(fabs(x))

#define lat_offset_1 (20.0 * sin(6.0 * x * m_pi) + 20.0 * sin(2.0 * x * m_pi)) * 2.0 / 3.0

#define lat_offset_2 (20.0 * sin(y * m_pi) + 40.0 * sin(y / 3.0 * m_pi)) * 2.0 / 3.0

#define lat_offset_3 (160.0 * sin(y / 12.0 * m_pi) + 320 * sin(y * m_pi / 30.0)) * 2.0 / 3.0

#define lon_offset_0(x,y) 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(fabs(x))

#define lon_offset_1 (20.0 * sin(6.0 * x * m_pi) + 20.0 * sin(2.0 * x * m_pi)) * 2.0 / 3.0

#define lon_offset_2 (20.0 * sin(x * m_pi) + 40.0 * sin(x / 3.0 * m_pi)) * 2.0 / 3.0

#define lon_offset_3 (150.0 * sin(x / 12.0 * m_pi) + 300.0 * sin(x / 30.0 * m_pi)) * 2.0 / 3.0

#define range_lon_max 137.8347

#define range_lon_min 72.004

#define range_lat_max 55.8271

#define range_lat_min 0.8293

// jza = 6378245.0, 1/f = 298.3

// b = a * (1 - f)

// ee = (a^2 - b^2) / a^2;

#define jza 6378245.0

#define jzee 0.00669342162296594323

@implementation zslocationconverter

+ (double)transformlat:(double)x bdlon:(double)y

+ (double)transformlon:(double)x bdlon:(double)y

+ (bool)outofchina:(double)lat bdlon:(double)lon

+ (cllocationcoordinate2d)gcj02encrypt:(double)gglat bdlon:(double)gglon

double dlat = [self transformlat:(gglon - 105.0)bdlon:(gglat - 35.0)];

double dlon = [self transformlon:(gglon - 105.0) bdlon:(gglat - 35.0)];

double radlat = gglat / 180.0 * m_pi;

double magic = sin(radlat);

magic = 1 - jzee * magic * magic;

double sqrtmagic = sqrt(magic);

dlat = (dlat * 180.0) / ((jza * (1 - jzee)) / (magic * sqrtmagic) * m_pi);

dlon = (dlon * 180.0) / (jza / sqrtmagic * cos(radlat) * m_pi);

mglat = gglat + dlat;

mglon = gglon + dlon;

respoint.latitude = mglat;

respoint.longitude = mglon;

return respoint;

}+ (cllocationcoordinate2d)gcj02decrypt:(double)gjlat gjlon:(double)gjlon

+ (cllocationcoordinate2d)bd09decrypt:(double)bdlat bdlon:(double)bdlon

+(cllocationcoordinate2d)bd09encrypt:(double)gglat bdlon:(double)gglon

+ (cllocationcoordinate2d)wgs84togcj02:(cllocationcoordinate2d)location

+ (cllocationcoordinate2d)gcj02towgs84:(cllocationcoordinate2d)location

+ (cllocationcoordinate2d)wgs84tobd09:(cllocationcoordinate2d)location

+ (cllocationcoordinate2d)gcj02tobd09:(cllocationcoordinate2d)location

+ (cllocationcoordinate2d)bd09togcj02:(cllocationcoordinate2d)location

+ (cllocationcoordinate2d)bd09towgs84:(cllocationcoordinate2d)location

@end

iOS 地球座標 火星座標說明

座標系介紹 首先介紹一下目前的定位座標系統 1 地球座標 代號 gps wgs84 有w就是世界通用的 也就是原始座標體系,這是國際公認的世界標準座標體系 使用 wgs84 座標系統的產品有 蘋果的 cllocationmanager 獲取的座標 2 火星座標 代號 gcj 02 g國家 c測繪 j...

php 火星座標 百度座標轉換 地球座標轉換

型別 說明使用者 wgs84 美國gps 國際通用,如谷歌國外地圖 osm地圖 火星系gcj 02 國測局制定的標準,國內地圖必須至少使用此對位置進行首次加密 bg 09 共有兩個類,coordinate和coordinatetool。coordinate,座標點物件 class coordinat...

座標轉換(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 扁率 de...