3.5 CoordinateSystemCOM
CoordinateSystemCOM是坐标系统组件,负责三维场景中不同坐标系、不同坐标类型的坐标相互转换。该组件通过坐标转换对象(Transformate)对外提供屏幕坐标,场景世界坐标,经纬度坐标以及不同坐标系之间的坐标转换。
坐标转换对象(Transformate)需要通过MapManagerCOM组件的CreateTransformation()接口创建。
注意: 在坐标转换过程中用到的坐标对象iPosition是通过MapManagerCOM组件的CreatePosition()接口创建的。
1.ScreenPosToWorldPos
说明:
屏幕坐标转经纬度高程坐标。
语法:
Javascript调用
ScreenPosToWorldPos(screenX, screenY)
C++调用
HRESULT ScreenPosToWorldPos([in] INT screenX, [in] INT screenY, [out,retval] IUnknown** iPosition)
C#调用
IPosition ScreenPosToWorldPos(int screenX, int screenY)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
screenX | int | 屏幕坐标X |
screenY | int | 屏幕坐标Y |
返回值: iPosition
iPosition表示坐标对象。
2.ConvertLongLatHeightToScreen
说明:
经纬度高程坐标转屏幕坐标。
语法:
Javascript调用
ConvertLongLatHeightToScreen(sPos)
C++调用
HRESULT ConvertLongLatHeightToScreen([in] IUnknown* sPos, [out,retval] IUnknown** rPos)
C#调用
IPosition ConvertLongLatHeightToScreen(IPosition sPos)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
sPos | IPosition | 经纬度高程坐标对象 |
返回值: rPos
rPos表示屏幕坐标对象。
3.ConvertXYZToLongLatHeight
说明:
世界坐标转经纬度高程坐标。
语法:
Javascript调用
ConvertXYZToLongLatHeight(sPos)
C++调用
HRESULT ConvertXYZToLongLatHeight([in] IUnknown* sPos, [out,retval] IUnknown** rPos)
C#调用
IPosition ConvertXYZToLongLatHeight(IPosition sPos)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
sPos | IPosition | 世界坐标对象 |
返回值: rPos
rPos表示返回的坐标对象,该对象中保存的是经纬度高程坐标。
4.ConvertLongLatHeightToXYZ
说明:
经纬度高程坐标转世界坐标。
语法:
Javascript调用
ConvertLongLatHeightToXYZ(sPos)
C++调用
HRESULT ConvertLongLatHeightToXYZ([in] IUnknown* sPos, [out,retval] IUnknown** rPos)
C#调用
IPosition ConvertLongLatHeightToXYZ(IPosition sPos)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
sPos | IPosition | 经纬度高程坐标对象 |
返回值: rPos
rPos表示返回的坐标对象,该对象中保存的是世界坐标。
5.GetNewPosByTranslate
说明:
获取偏移后的坐标对象。
语法:
Javascript调用
GetNewPosByTranslate(sPos, tX, tY, tZ)
C++调用
HRESULT GetNewPosByTranslate([in] IUnknown* srcPos, [in] DOUBLE tX, [in] DOUBLE tY, [in] DOUBLE tZ, [out,retval] IUnknown** newPos)
C#调用
IPosition GetNewPosByTranslate(IPosition sPos, double tX, double tY, double tZ)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
sPos | IPosition | 原始经纬度高程坐标对象 |
tX | double | X轴偏移量(正东方向)。 单位m |
tY | double | Y轴偏移量(正北方向)。 单位m |
tZ | double | Z轴偏移量(高度)。 单位m |
返回值: newPos
newPos表示偏移后的坐标对象。该对象中保存的是经纬度高程坐标。
6.ConvertCoordBySRS
说明:
不同坐标系下的坐标转换。根据原始坐标、原始坐标系和目标坐标系计算目标坐标。
语法:
Javascript调用
ConvertCoordBySRS(srcPos, srcSRS, destSRS)
C++调用
HRESULT ConvertCoordBySRS([in] IUnknown* srcPos, [in] BSTR srcSRS, [in] BSTR destSRS, [out,retval] IUnknown** destPos)
C#调用
IPosition ConvertCoordBySRS(IPosition srcPos, string srcSRS, string destSRS)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
srcPos | IPosition | 原始坐标对象 |
srcSRS | string | 原始坐标系坐标参考 |
destSRS | string | 目标坐标系坐标参考 |
返回值: destSRS
destSRS为目标坐标参考下的坐标对象。
7.JudgePointInFivePoint
说明:
针对四棱锥判断点控件位置关系。
语法:
Javascript调用
JudgePointInFivePoint(sPos, firstPos, secondPos, thirdPos, forthPos, fifthPos)
C++调用
HRESULT JudgePointInFivePoint([in] IUnknown* srcPos, [in] IUnknown* firstPos, [in] IUnknown* secondPos, [in] IUnknown* thirdPos, [in] IUnknown* forthPos, [in] IUnknown* fifthPos, [out,retval] VARIANT_BOOL* state)
C#调用
bool JudgePointInFivePoint(IPosition sPos, IPosition firstPos, IPosition secondPos, IPosition thirdPos, IPosition forthPos, IPosition fifthPos)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
sPos | IPosition | 计算点位对象 |
firstPos | IPosition | 四棱锥顶端顶点坐标对象 |
secondPos | IPosition | 四棱锥底面第一个顶点坐标对象 |
thirdPos | IPosition | 四棱锥底面第二个顶点坐标对象 |
forthPos | IPosition | 四棱锥底面第三个顶点坐标对象 |
fifthPos | IPosition | 四棱锥底面第四个顶点坐标对象 |
返回值: state
state表示坐标点是否在四棱锥内部。