📄 readme.txt
字号:
Function BLXY(B As Double, L As Double, Lo As Double, [X As Double], [Y As Double])
函数功能:将大地坐标值转换为平面坐标系。
输入参数:为六十进制。例如: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])
函数功能:将平面坐标系转换为经纬度。
输入参数: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])
函数功能:坐标换带。
输入参数:X,Y。如坐标包含带号,中央子午线值应为标准分带坐标。
L0、L1应为1.5、3、6或任意中央子午线值。
返 回 值:X1,Y1。如中央子午线为任意值,则输出坐标不包含带号。
函数功能:将六十进制的角度转换为10进制。例如36度30分30.3456秒的转换,表示为A=DEG(30.30303456)
函数功能:将十进制的角度转换为六十进制。例如 DMS(30.5)=36度30分
函数功能:PI = 3.14159265358979
Sub SetCoordinate(a As Double, f As Double)
函数功能:设置椭球参数。默认为1980年西安坐标系参数
'1954坐标系参数
res_A = 6378245
res_F = 298.3
'1980坐标系参数
res_A = 6378140
res_F = 298.257
'1984坐标系参数
res_A = 6378137
res_F = 298.257223563
在AutoCAD Lisp下调用方法:
;*******************************************************************************
;函数功能:转换主函数
;函数名称: 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"))
;;; 函数功能:设置椭球参数。默认为1980年西安坐标系参数
;;; '1954坐标系参数
;;; res_A = 6378245
;;; res_F = 298.3
;;; '1980坐标系参数
;;; res_A = 6378140
;;; res_F = 298.257
;;; '1984坐标系参数
;;; 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
'由经纬度转换至大地坐标
Call pObj.BLXY(txtX, txtY, Val(txtLo), x, y)
List1.AddItem "由经纬度转换至大地坐标"
List1.AddItem x
List1.AddItem y
'北京坐标系由大地坐反算至经纬度
Call pObj.XYBL(x, y, Val(txtLo), OutB, OutL)
List1.AddItem "由大地坐反算至经纬度"
List1.AddItem OutB
List1.AddItem OutL
'由经纬度转换至大地坐标
Call pObj.BLXY(OutB, OutL, Val(txtLo), x, y)
List1.AddItem "由经纬度转换至大地坐标"
List1.AddItem x
List1.AddItem y
'1980坐标系参数
pMainObj.SetCoordinate 6378140, 298.257
'由经纬度转换至大地坐标
Call pMainObj.BLXY(txtX, txtY, Val(txtLo), x, y)
List1.AddItem "由经纬度转换至大地坐标"
List1.AddItem x
List1.AddItem y
'北京坐标系由大地坐反算至经纬度
Call pObj.XYBL(x, y, Val(txtLo), OutB, OutL)
List1.AddItem "由大地坐反算至经纬度"
List1.AddItem pMainObj.StrDMS(OutB)
List1.AddItem pMainObj.StrDMS(OutL)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -