WGS84坐標和HK80坐標之間的相互轉換

2021-03-02 ecoinformatics

HK80(Hong Kong 1980 Grid System)是香港的一種坐標系(EPSG:2326),一般用於地圖繪製、工程勘測、樹木調查等。不過,生態學研究中最常用的坐標係為WGS84(EPSG:4326),例如GPS一般就是直接給出WGS84的經緯度,Google Earth等也用WGS84坐標系。那麼HK80坐標如何轉換為WGS84坐標呢?

香港地政署測繪處給出了測量基準說明(https://www.geodetic.gov.hk/common/data/pdf/explanatorynotes_c.pdf), 其中有非常詳細的轉換公式。根據這些公式,本人曾於2014年編寫了HK80 R程序包(https://cran.r-project.org/web/packages/HK80/index.html)。

近幾年來,也有不少新工具誕生:例如,香港地政署測繪處的HK80坐標在線轉換工具(https://www.geodetic.gov.hk/en/services/tform/tform.aspx )公開了API,該API可以根據用戶在網址中傳入的參數返回json數據。sf程序包也在proj程序包的基礎上開發了st_transform函數,讓不同坐標系之間的轉換變得非常方便。也有人基於pyproj(https://pyproj4.github.io/pyproj/stable/#,https://proj.org/)開發了hk80 python程序包(https://pypi.org/project/hk80/)等。

本文給出在R中進行WGS84和HK80坐標相互轉換的三種方法,其中首選為香港地政署的在線轉換工具,但是由於伺服器可能會有一定的限制,如果有大量數據需要準換,訪問會較為頻繁,用戶IP可能受限。下載到本地的sf和HK80程序包就沒有這些限制。sf和HK80的程序包的結果都是可靠的。相比之下,在sf中建立坐標點並進行轉換批量轉換更為方便。HK80程序包的結果可以作為參考。

地理坐標轉換常涉及度、分、秒和十進位的轉換,本文也給出兩種方法,作為附錄,以方便讀者。

HK80GRID坐標轉換為WGS84坐標The HK80 R package

library(HK80)
HK1980GRID_TO_WGS84GEO(N = 820359.389, E = 832591.320)

## latitude longitude
## 1 22.32225 114.1412

The official online conversion tool

the Geodetic Survey Section, Lands Department, Hong Kong SAR Gov.

API example: http://www.geodetic.gov.hk/transform/v2/?inSys=hkgrid&e=832591.320&n=820359.389

library(jsonlite)
data1 <- fromJSON("http://www.geodetic.gov.hk/transform/v2/?inSys=hkgrid&e=832591.320&n=820359.389")
names(data1)

## [1] "wgsLat" "wgsLong" "hkLat" "hkLong" "utmGridZone"
## [6] "utmGridE" "utmGridN" "utmRefZone" "utmRefE" "utmRefN"

data1$wgsLat

## [1] 22.32224

data1$wgsLong

## [1] 114.1412

The sf package

library(sf)

## Linking to GEOS 3.8.1, GDAL 3.1.1, PROJ 6.3.1

p1 = st_point(c(832591.320, 820359.389))
sfc = st_sfc(p1, crs = 2326)
(st_transform(sfc, 4326))

## Geometry set for 1 feature
## geometry type: POINT
## dimension: XY
## bbox: xmin: 114.1412 ymin: 22.32224 xmax: 114.1412 ymax: 22.32224
## geographic CRS: WGS 84

## POINT (114.1412 22.32224)

WGS84 坐標轉換為HK80GRID坐標The HK80 R package

library(HK80)
WGS84GEO_TO_HK1980GRID(latitude = 22.32224, longitude = 114.14118)

## N E
## 1 820358.7 832591.4

The official online conversion tool

from the Geodetic Survey Section, Lands Department, Hong Kong SAR Gov.

# Copy the following URL to browser
# http://www.geodetic.gov.hk/transform/v2/?inSys=wgsgeog&outSys=hkgrid&lat=22.32224&long=114.14118&h=23.128
# {"hkN": 820358.910,"hkE": 832590.508,"hkpd": 26.009}

library(jsonlite)
data1 <- fromJSON("http://www.geodetic.gov.hk/transform/v2/?inSys=wgsgeog&outSys=hkgrid&lat=22.32224&long=114.14118&h=23.128")
names(data1)

## [1] "hkN" "hkE" "hkpd"

data1$hkN

## [1] 820358.9

data1$hkE

## [1] 832590.5

The sf package

library(sf)
p1 = st_point(c(114.14118, 22.32224))
sfc = st_sfc(p1, crs = 4326)
(ccc <- st_transform(sfc, 2326))

## Geometry set for 1 feature
## geometry type: POINT
## dimension: XY
## bbox: xmin: 832590.5 ymin: 820358.9 xmax: 832590.5 ymax: 820358.9
## projected CRS: Hong Kong 1980 Grid System

## POINT (832590.5 820358.9)

附錄: 度、分、秒和十進位格式的相互轉換Using the sp package

library(sp)
dd2dms(114.14118) # decimal to Degree, Minute, Second format

## [1] 114d8'28.248"E

as.numeric(dd2dms(114.14118)) #

## [1] 114.1412

char2dms("47d15'6.12\"E")

## [1] 47d15'6.12"E

as.numeric(char2dms("47d15'6.12\"E"))

## [1] 47.2517

Using the biogeo package

library(biogeo)
res <- dms2dd(47,15,6.12,"E") # ns letters (N,S,E,W)
print(res)

## [1] 47.2517

dd2dmslong(114.14118)

## xdeg xmin xsec EW
## 1 114 8 28.2 E

dd2dmslat(22.32224)

## ydeg ymin ysec NS
## 1 22 19 20.1 N

進一步閱讀

Ooms J.  (2014). The jsonlite Package: A Practical and Consistent Mapping Between JSON Data and R Objects. arXiv:1403.2805 [stat.CO] URL https://arxiv.org/abs/1403.2805.

Zhang J.  (2016). HK80: Conversion Tools for HK80 Geographical Coordinate System. R package version 0.0.2. https://CRAN.R-project.org/package=HK80

Robertson M. (2016). biogeo: Point Data Quality Assessment and Coordinate Conversion. R package version 1.0. https://CRAN.R-project.org/package=biogeo

Pebesma, E., (2018). Simple Features for R: Standardized Support for Spatial Vector Data. The R Journal 10 (1), 439-446, https://doi.org/10.32614/RJ-2018-009

Roger S. Bivand, Edzer Pebesma, Virgilio Gomez-Rubio,(

2013) Applied spatial data analysis with R, Second edition. Springer, NY. https://asdar-book.org/

https://pypi.org/project/hk80/

https://spatialreference.org/ref/?search=Hong+Kong

https://www.geodetic.gov.hk/en/download.htm

相關焦點

  • 前端小知識——地圖坐標轉換
    >地圖上的經緯度轉換到平面坐標時,和平面坐標的XY的對應關係是什麼,就是經度(longitude)和維度(latitude)分別給對應X,Y中的誰?關於方法,我找到了應該是最通用的一種,源碼地址——作者wandergis,大部分的轉換方式應該都是基於他的這個版本,相關說明也是最清楚的。實際中我們可能會用到不同的地圖,那麼就對應到不同坐標系的轉換,比如說,你有一份wgs84的數據服務,你要展現在百度或者高德地圖上,這時候你就需要轉換了。
  • ArcGIS中將WGS84坐標轉換為北京54或者西安80坐標系
    然而在這些數據與國內其他來源的地理數據進行疊合分析時,都面臨著坐標系統轉換的難題。美國GPS採用的是WGS84坐標系統,而國內的地圖數據多是北京54,西安80坐標系以及地方自己定義的坐標系統。不同坐標系統之間的轉換有嚴格的數學定義和轉換方程。如3參數法,7參數法,10參數(arcgis),只有獲得當地的精確地參考坐標,才能將這些參數求出來,進行精確的轉換。
  • 經緯度WGS84地理坐標系轉換成CGCS2000坐標系步驟.docx
    經緯度WGS84地理坐標系轉換成CGCS2000坐標系步驟 基於ArcGIS中進行操作 供大家參考學習 文末有該文檔的下載方式 1、 將圖層從奧維中導出成shp文件,
  • GPS測量常用坐標系統及相互轉換
    它具有全球性、全天候、連續性和實時性的精密三維導航與定位功能,現已廣泛用於大地測量、工程測量、航空攝影測量以及地形測量等各個方面。相對於常規測量來說,GPS測量具有測量精度高、測站間無需通視、觀測時間短、儀器操作簡便、全天候作業、可提供三維坐標等特點。大大地提高了測量效率和精度。但是由於坐標系統的不同,面臨著大量的坐標轉換問題。對GPS技術的推廣使用造成了一定的障礙。
  • CAD如何切換圖紙之間的坐標? CAD圖紙坐標轉換圖文教程
    CAD如何切換圖紙之間的坐標? CAD圖紙坐標轉換圖文教程時間:2017-08-05 13:26   來源:三聯   責任編輯:沫朵 川北在線核心提示:原標題:CAD如何切換圖紙之間的坐標? CAD圖紙坐標轉換圖文教程 拿到別人給我們的設計圖紙,有一些圖紙是會帶著坐標關係的,有些是沒有的。
  • 全面講解2000坐標系和WGS84坐標系的區別聯繫
    (1)CGCS2000:國家坐標系CGCS2000坐標是2000.0曆元的瞬時坐標,用於各種生產活動,強調統一性、規範性、自洽性、穩定性。WGS84坐標是觀測曆元的動態坐標,用於導航,強調實時性、動態性。兩者用途不同,特點不同,但都統一於ITRS坐標系,都對準ITRF框架。可通過曆元歸算、框架轉換互相轉換。
  • 關於坐標轉換的一些基本概念
    每個項目收集到的資料並不一定都是一致的,如坐標類型不同:大地經緯度坐標,平面坐標等,也有可能採用的橢球體不同(坐標系不同)或投影方式不同等等。所以坐標系的相互轉換在項目中使用非常普遍,如大地坐標轉平面坐標,平面坐標轉空間直角坐標,平面坐標轉大地坐標等等。下面是關於坐標轉換的一些基本概念。
  • 坐標轉換的計算公式
    參心大地坐標與參心空間直角坐標轉換1名詞解釋:A:參心空間直角坐標系:a)以參心0為坐標原點;b)Z軸與參考橢球的短軸(旋轉軸)相重合;c)X軸與起始子午面和赤道的交線重合;d)Y軸在赤道面上與X軸垂直,構成右手直角坐標系0-XYZ;e)地面點P的點位用(X,Y,Z)表示;B:參心大地坐標系:a)以參考橢球的中心為坐標原點,橢球的短軸與參考橢球旋轉軸重合;b)大地緯度B:以過地面點的橢球法線與橢球赤道面的夾角為大地緯度
  • 關於坐標轉換的一些基本概念 - 土木智庫
    每個項目收集到的資料並不一定都是一致的,如坐標類型不同:大地經緯度坐標,平面坐標等,也有可能採用的橢球體不同(坐標系不同)或投影方式不同等等。所以坐標系的相互轉換在項目中使用非常普遍,如大地坐標轉平面坐標,平面坐標轉空間直角坐標,平面坐標轉大地坐標等等。下面是關於坐標轉換的一些基本概念。
  • ArcGIS坐標轉換及投影詳解
    地理數據的坐標主要分為兩種方式:地理坐標和投影坐標。地理坐標是球面坐標,簡單來說就是使用經緯度來表示位置坐標,投影是按照一定的數學模型將球面坐標投影到幾何體後,用平面坐標(x和y)來表示位置信息。工作中我們經常會用到地理坐標與投影坐標的轉換。
  • 從地方坐標繫到2000國家大地坐標系的轉換
    原點O 設在大地體的質量中心, 用相互垂直的X、Y、Z 三個軸來表示, X 軸與首子午面與赤道面的交線重合,向東為正; Z 軸與地球旋轉軸重合, 向北為正; Y 軸與XZ 平面垂直構成右手系。  CGCS2000國家大地坐標系, 是一種採用地球質量中心作為原點的地心坐標系, 2000 國家大地坐標系的原點為包括海洋和大氣的整個地球的質量中心。
  • 坐標轉換
    進行GPS,北京54,西安80的經緯度和平面坐標之間的轉換,可以計算帶號
  • 坐標系常見問題解答
    比如wgs84等地理坐標系的範圍應滿足-180≤X≤180,-90≤Y≤90,再比如Xian_1980_3_Degree_GK_Zone_38坐標系的坐標的形式是(38XXXXXX,YYYYYYY)等,如果你數據的坐標形式是(19XXXXXX,YYYYYYY)而你定義成Xian_1980_3_Degree_GK_Zone_38就錯了。
  • Unity遊戲開發——3D坐標轉換UGUI坐標
    0.前言實際開發中,我們經常會遇到需要3D與2D坐標轉換的問題,比如血條同步跟隨人物移動、傷害數字在人物頭上出現
  • 「2000坐標」成了標配,你還不懂坐標系定義和轉換嗎?
    國土空間規劃明確要求「統一採用2000國家大地坐標系」和「1985年國家高程基準」作為空間定位基礎,可是很多時候我們拿到的數據坐標並不是「2000國家大地坐標系」,需要進行坐標轉換,這可就犯了難?其實不只是國土空間規劃,其他需要應用ArcGIS的行業同理——坐標系統是GIS數據重要的數學基礎,用於表示地理要素、圖像和觀測結果的參照系統,坐標系統的定義能夠保證地理數據在軟體中正確的顯示其位置、方向和距離,缺少坐標系統的GIS數據是不完善的。
  • 利用ArcGIS進行WGS84等坐標的高斯投影操作
    眾所周知,我們生存的地球是一個不規則的橢球體,通常是用地理坐標系來表示位置,常用的如:WGS84、Xian80及CGCS2000等。但是,我們經常為了計算圖形的周長、面積等幾何要素量和轉換為常用單位表示時就需要將地理坐標系轉換為平面坐標系。
  • 如何將傳感器坐標系下的數據轉換到自車坐標系?
    如何將傳感器坐標系下的數據轉換到自車坐標系?本文將會集中在如何將傳感器坐標系下的數據轉換到自車坐標系下。有關無人駕駛技術中傳感器到車體坐標系的坐標轉換原理及數學推導,該原理不僅用在無人車領域,同時在機器人、無人機、三維建模等領域也得到了廣泛使用。 無人車上擁有各種各樣的傳感器,每個傳感器的安裝位置和角度又不盡相同。對於傳感器的提供商,開始並不知道傳感器會以什麼角度,安裝在什麼位置,因此只能根據傳感器自身建立坐標系。
  • 坐標轉換流程與公式,七參數、四參數
    7參數轉換整體流程(不同橢球之間):平面直角坐標系-->大地坐標系-->空間直角坐標系 轉換(To) 空間直角坐標系-
  • 經緯度、平面坐標系轉換方法
    使用工具:經緯度與我國54、80大地坐標轉換的小工具我們經常需要進行坐標系之間、經緯度和XY之間的轉換,我們使用這個小工具,做一個介紹
  • 工程測量坐標系入門——怎麼計算坐標正算反算、坐標轉換詳細演示
    對於一個剛剛從學校畢業沒有真正從事過工程測量工作的人員,或者以前從事其他工作現在剛剛轉行從事工程測量工作的初學者來說,對於「認識工程測量坐標系」中的計算常常難以理解,於是今天東英時代培訓就用一個房間軸線交點坐標計算為例,專門給大家演示一下,坐標正算、反算、坐標轉換等工程測量中的入門計算