?? readme.txt
字號:
Function BLXY(B As Double, L As Double, Lo As Double, [X As Double], [Y As Double])
函數(shù)功能:將大地坐標值轉換為平面坐標系。
輸入?yún)?shù):為六十進制。例如:36度30分30.3456秒,表示為:36.30303456
Lo為中央子午線值或帶號。帶號:1.5、3、6或任意中央子午線
返 回 值:X,Y。如中央子午線為任意值,則輸出坐標不包含帶號。
Function XYBL(X As Double, Y As Double, Lo As Double, [B As Double], [L As Double])
函數(shù)功能:將平面坐標系轉換為經(jīng)緯度。
輸入?yún)?shù):X,Y。如坐標包含帶號,中央子午線值應為標準分帶坐標。
Lo為中央子午線值或帶號。帶號:1.5、3、6或任意中央子午線
返 回 值:B,L為六十進制。例如:36度30分30.3456秒,表示為:36.30303456
Function XYHD(X As Double, Y As Double, Lo As Double, inL1 As Double, [X1 As Double], [Y1 As Double])
函數(shù)功能:坐標換帶。
輸入?yún)?shù):X,Y。如坐標包含帶號,中央子午線值應為標準分帶坐標。
L0、L1應為1.5、3、6或任意中央子午線值。
返 回 值:X1,Y1。如中央子午線為任意值,則輸出坐標不包含帶號。
函數(shù)功能:將六十進制的角度轉換為10進制。例如36度30分30.3456秒的轉換,表示為A=DEG(30.30303456)
函數(shù)功能:將十進制的角度轉換為六十進制。例如 DMS(30.5)=36度30分
函數(shù)功能:PI = 3.14159265358979
Sub SetCoordinate(a As Double, f As Double)
函數(shù)功能:設置橢球參數(shù)。默認為1980年西安坐標系參數(shù)
'1954坐標系參數(shù)
res_A = 6378245
res_F = 298.3
'1980坐標系參數(shù)
res_A = 6378140
res_F = 298.257
'1984坐標系參數(shù)
res_A = 6378137
res_F = 298.257223563
在AutoCAD Lisp下調用方法:
;*******************************************************************************
;函數(shù)功能:轉換主函數(shù)
;函數(shù)名稱: C:Test_XYBL
;*******************************************************************************
(DEFUN c:Test_XYBL(/ randompoint mrandomX mrandomY pt pLo)
(SETQ pLo 117.0)
(SETQ randompoint (getpoint "請選擇圖中任一點:"))
(IF (/= randompoint nil)
(progn
(SETQ pt (LAND_BLXY 38 117 pLo))
(SETQ mrandomX (car pt))
(SETQ mrandomY (cadr pt))
(SETQ pt (LAND_XYBL mrandomX mrandomY pLo))
(princ (car pt))
(princ (cadr pt))
)
)
)
;;======================================================================================
;;
;;======================================================================================
(DEFUN LAND_XYBL (inX inY inLo / pTools pConfigFile acad-object pPoint)
(SETQ pTools (VLAX-CREATE-OBJECT "LandBLXY.xyBLHXYZ"))
;;; 函數(shù)功能:設置橢球參數(shù)。默認為1980年西安坐標系參數(shù)
;;; '1954坐標系參數(shù)
;;; res_A = 6378245
;;; res_F = 298.3
;;; '1980坐標系參數(shù)
;;; res_A = 6378140
;;; res_F = 298.257
;;; '1984坐標系參數(shù)
;;; res_A = 6378137
;;; res_F = 298.257223563
(VLAX-INVOKE-METHOD pTools 'SetCoordinate 6378140 298.257)
(IF (/= NIL pTools)
(PROGN
(SETQ pPoints
(VLAX-INVOKE-METHOD pTools 'XYBL inX inY inLo outX outY)
)
(SETQ pPoint (VLAX-SAFEARRAY->LIST (VLAX-VARIANT-VALUE pPoints)))
(VLAX-RELEASE-OBJECT pTools) ;釋放目標
(SETQ pTools nil)
(PRINC)
)
(SETQ pPoint nil)
)
pPoint
)
;;======================================================================================
;;
;;======================================================================================
(DEFUN LAND_BLXY (inX inY inLo / pTools pConfigFile acad-object pPoint)
(SETQ pTools (VLAX-CREATE-OBJECT "LandBLXY.xyBLHXYZ"))
(VLAX-INVOKE-METHOD pTools 'SetCoordinate 6378140 298.257)
(IF (/= NIL pTools)
(PROGN
(SETQ pPoints
(VLAX-INVOKE-METHOD pTools 'BLXY inX inY inLo outX outY)
)
(SETQ pPoint (VLAX-SAFEARRAY->LIST (VLAX-VARIANT-VALUE pPoints)))
(VLAX-RELEASE-OBJECT pTools) ;釋放目標
(SETQ pTools nil)
(PRINC)
)
(SETQ pPoint nil)
)
pPoint
)
在VB下調用方法:
Dim pMainObj As New xyBLHXYZ
Dim pObj As New xyBLXY80
' Dim pObj As New xyBLXY80
' Dim pObj As New xyBLXY84
Dim x As Double, y As Double, z As Double, B As Double, L As Double, H As Double
Dim OutX As Double, OutY As Double, OutZ As Double
Dim OutB As Double, OutL As Double, OutH As Double
'由經(jīng)緯度轉換至大地坐標
Call pObj.BLXY(txtX, txtY, Val(txtLo), x, y)
List1.AddItem "由經(jīng)緯度轉換至大地坐標"
List1.AddItem x
List1.AddItem y
'北京坐標系由大地坐反算至經(jīng)緯度
Call pObj.XYBL(x, y, Val(txtLo), OutB, OutL)
List1.AddItem "由大地坐反算至經(jīng)緯度"
List1.AddItem OutB
List1.AddItem OutL
'由經(jīng)緯度轉換至大地坐標
Call pObj.BLXY(OutB, OutL, Val(txtLo), x, y)
List1.AddItem "由經(jīng)緯度轉換至大地坐標"
List1.AddItem x
List1.AddItem y
'1980坐標系參數(shù)
pMainObj.SetCoordinate 6378140, 298.257
'由經(jīng)緯度轉換至大地坐標
Call pMainObj.BLXY(txtX, txtY, Val(txtLo), x, y)
List1.AddItem "由經(jīng)緯度轉換至大地坐標"
List1.AddItem x
List1.AddItem y
'北京坐標系由大地坐反算至經(jīng)緯度
Call pObj.XYBL(x, y, Val(txtLo), OutB, OutL)
List1.AddItem "由大地坐反算至經(jīng)緯度"
List1.AddItem pMainObj.StrDMS(OutB)
List1.AddItem pMainObj.StrDMS(OutL)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -