// WsFunctionDefine.h

#ifndef __WS_FUNCTION_DEFINE_H_
#define __WS_FUNCTION_DEFINE_H_

int WsAddAnnotation( int hLayer, string strText, wkPoint pt, int nh, int nAngle );
/*函数用途: 在层上用程序添加一个标注
输入参数: 1.int hLayer    层句柄
          2.string strText   标注显示的文本
          3.wkPoint pt       插入点的坐标
          4.int nh           字高( 以0.1mm为单位 );
          5.int nAngle       文字串方向( 以0.1度为单位 );
输出参数:
返 回 值: 加入层后的标注ID
备  注:   无
*/
void WsAddAnnotationToSelection( int hLayer, int nAnnotationID );
/*函数用途: 添加一个标注到选中集中
输入参数: 1.int hLayer    层句柄
          2.int nAnnotationID      地物ID
输出参数: 无
返 回 值:
备  注: 无
*/
int WsAddFeature( int hLayer, int hGeom );
/*函数用途: 获取地物中的几何体
输入参数: 1.int hLayer      层句柄
          2.int hGeom        地物几何体句柄
输出参数:
返 回 值: 新增地物的id
备  注: 关于hGeom参见地物几何Geometry的说明
*/
void WsAddFeatureToSelection( int hLayer, int nFeatureID );
/*函数用途: 添加一个地物到选中集中
输入参数: 1.int hLayer    层句柄
          2.int nFeatureID         地物ID
输出参数: 无
返 回 值:
备  注: 无
*/
void WsAddFeatureToTarget( int hLayer, int nFeatureID );
/*函数用途: 添加一个地物到目标集中
输入参数: 1.int hLayer    层句柄
          2.int nFeatureID        地物ID
输出参数: 无
返 回 值:
备  注: 无
*/
int WsAddLayersOne( string layerName, int hDb );
/*函数用途: 在WorkSpace加入一个新层
输入参数:  1.layerName       层句柄
           2.hDb              层所在的数据库.
           										若hDb=0, 取WorkSpace中的第一个库, 否则hDb必须存在于WorkSpace中.
输出参数: 无
返 回 值: 成功加入返回层的句柄,否则返回0
备  注:   加入层后, 同时加入到图例树中.
*/
int WsAddStyle( int hLayer, int nType, string styleName, string styleNote );
/*函数用途: 按式样名和式样备注添加一个默认样式
输入参数: 1.int hLayer;       层句柄
          2.int nType;           样式类别,有五类, 如wkStyleLine等
          3.string strStyleName  样式名
          4.string strStyleNote  样式备注,样式名和样式备注
输出参数:
返 回 值: 加入层中后的式样ID
备  注: 无
*/
void WsAddWalkDb( int hDb );
/*函数用途: 将数据库加入当前WorkSpace中
输入参数: hDb     数据库句柄
输出参数: 无
返 回 值: 无
备  注:
*/
void WsAdoTableWalkSQL( int hDb, string strSQL );
/*函数用途: 打开Ado表执行SQL语句
输入参数: 1.int hDb          数据库句柄
          2.string SQL          SQL语句
输出参数: 无
返 回 值: 正确执行了SQL语句返回TRUE,否则返回FALSE
备  注:   无
*/
int WsBoolOp2Polygon( int hPolyGeomA, int hPolyGeomB, int op_type );
/*函数用途: 对两个多边形地物进行布尔操作
输入参数: 1.int hPolyGeomA        面地物A几何体句柄
          2.int hPolyGeomB        面地物B几何体句柄
          3.int op_type              0--求交, 1--求和, 2--求差( A-B );
返 回 值: 布尔操作结果( 地物几何体句柄 ).若返回为0, 则擦除结果为空.
          使用完结果句柄后必须调用WsFreeGeometry释放
*/
void WsCalViewToBox( wkPoint minPt, wkPoint maxPt, int bChangeScale );
/*函数用途: 调整视图以显示给定区域
输出参数: 1.wkPoint minPt       左下角坐标
          2.wkPoint maxPt       右上角坐标
          3.int bChangeScale    是否调整视图比例以适应包围盒,
                                 FALSE则只调整视图显示中心
输出参数: 无
返 回 值: 无
备  注:   无
*/
void WsClearAnnotationSelection( int hLayer );
/*函数用途: 清空层中选中标注集
输入参数: 1.int hLayer    层句柄
输出参数: 无
返 回 值: 无
备  注:   无
*/
void WsCleareLayersSelection();
/*函数用途: 清除所有层的选中标记(包括地物和文字的选中以及目标);
输入参数: 无
输出参数: 无
返 回 值:
备  注:
*/
void WsClearFeatureSelection( int hLayer );
/*函数用途: 清空层中选中地物集
输入参数: 1.int hLayer        层句柄
输出参数: 无
返 回 值: 无
备  注: 无
*/
void WsClearFeatureTarget( int hLayer );
/*函数用途: 清空层中目标地物集
输入参数: 1.int hLayer    层句柄
输出参数: 无
返 回 值: 无
备  注: 无
*/
void WsCloseWalkDb( int hDb );
/*函数用途: 关闭一个已打开数据库( 并释放句柄 );
输入参数: hDb        数据库句柄
输出参数: 无
返 回 值: 关闭了指定数据库返回TRUE,否则返回FALSE
备  注:   若该库在WorkSpace, 则隶属于该库的所有层将被移去, 并将该库从WorkSpace中移去
*/
void WsCloseWks();
/*函数用途: 关闭当前的WorkSpace
输入参数: 无
输出参数: 无
返 回 值: 无
备  注:   无
*/
int WsCopyWalkSQLTable( int hSrcDb, string strSrcTable, int hTarDb, string strTarTable, int bRecreateTarTable );
/*函数用途: 将源库中的表复制到目标库中
输入参数: 1.int hSrcDb          源数据库句柄
          2.string strSrcTable     源表名或Select SQL语句
          3.int hTarDb          目标数据库句柄
          4.string strTarTable     目标表名或字段名集( 以“,”分开 );
          5.int bRecreateTarTable 若目标表已存在则删除重新创建
输出参数:    无
返 回 值: 成功复制后返回TRUE,否则返回FALSE
*/
int WsCreateGeometry( int hFromGeom );
/*函数用途: 创建( 复制 )一个地物几何体
输入参数: 1.int hFromGeom      要复制的地物几何体句柄.若为0, 则
                                  创建一个空几何体
输出参数:
返 回 值: 创建的地物几何体句柄( 使用完成后应调用WsFreeGeometry释放 );
备  注: 无
*/
int WsCreateGeometry2( int geoType, array points, int lineType );
/*函数用途: 创建一个地物几何体
输入参数: 1.int geoType          地物几何类型
          2.array points         地物几何体点流
          3.int lineType         点流的拟合类型
输出参数:
返 回 值: 创建的地物几何体句柄( 使用完成后应调用WsFreeGeometry释放 );
备  注: 几何类型为: 1—点, 2—线, 4—面
          点流的拟合类型为: 0—点, 1—折线, 3—3点弧, 10—样条曲线
*/
int WsCreateGeometry3( wkPoint point );
/*函数用途: 创建一个点地物几何体
输入参数: 1.wkPoint point          点坐标
输出参数:
返 回 值: 创建的地物几何体句柄( 使用完成后应调用WsFreeGeometry释放 );
备  注:
*/
int WsCreateLayer( int hDb, string layerName, array odbcFieldsInfo );
/*函数用途: 创建普通Walk层( 若层已存在, 则不创建 )并加载到工作空间
输入参数: 1.hDb: 数据库句柄
          2.layerName: 层句柄
          3.odbcFieldsInfo: 层的属性字段组, 每个属性字段表达为:
                < column_definition > ::= { column_name data_type }
                如:  myField varchar( 255 );
                字段类型: char, varchar, int, double, text, binary
输出参数: 无
返 回 值: 层句柄( 0--创建失败 );
备  注:   无
*/
int WsCreateParts( array points, int lineType );
/*函数用途: 创建一个walkParts
输入参数: 1.array points          walkParts点流
          2.int lineType          点流的拟合类型
输出参数:
返 回 值: 创建的walkParts句柄( 使用完成后应调用WsFreeParts释放 );
备  注:
*/
int WsDeleteAnnotation( int hLayer, int annotationID );
/*函数用途: 根据层句柄和标注ID删除标注
输入参数: 1.int hLayer;       层句柄
          2.int annotationID;     标注ID
输出参数: 无
返 回 值: 成功返回TRUE,否则返回FALSE
备  注: 如果输入的nID为0,则删除最后一个
*/
int WsDeleteFeature( int hLayer, int nFeatureID );
/*函数用途: 删除一个地物
输入参数: 1.int hLayer        层句柄
          2.int nFeatureID        地物ID
输出参数: 无
返 回 值: 如果成功删除返回TRUE,否则返回FALSE
备  注: 无
*/
void WsDeleteGeometryPointAt( int hGeom, int pointAt );
/*函数用途: 删除点地物中点
输入参数: 1.int hGeom        地物几何体句柄
          2.int pointAt         点在地物几何体中的序号( 从0开始 );
输出参数:
返 回 值:
备  注:
*/
int WsDeletePartsAt( int hGeom, int nPartsAt );
/*函数用途: 删除某个Parts
输入参数: 1.int hGeom          地物几何体句柄
          2.int nPartsAt          要删除第几个Parts
输出参数: 无
返 回 值: 如果成功删除返回TRUE,否则返回FALSE
备  注:   无
*/
int WsDeletePointAt( int hParts, int nPointsAt, int nPointAt );
/*函数用途: 删除地物的某个Parts的某个 wkPoints的一个 wkPoint
输入参数: 1.int hParts      walkParts几何体句柄
          2.int nPointsAt      第几个 wkPoints
          3.int nPointAt       删除第几个点
输出参数: 无
返 回 值: 如果成功删除返回TRUE,否则返回FALSE
备  注:
*/
int WsDeletePointsAt( int hParts, int nPointsAt );
/*函数用途: 删除地物中某个Parts中的某个 wkPoints
输入参数: 1.int hParts       walkParts几何体句柄
          2.int nPointsAt       第几个 wkPoints
输出参数: 无
返 回 值: 如果成功删除返回TRUE,否则返回FALSE
备  注: 无
*/
void WsDeletePolygonAt( int hGeom, int polygonAt );
/*函数用途: 删除地物几何中的子几何体
输入参数: 1.int hGeom          地物几何体句柄
          2.int polygonAt         多边形在地物内的序号( 从0开始 );
输出参数:
返 回 值: 无
备  注:   无
*/
void WsDeletePolygonRingAt( int hGeom, int polygonAt, int ringAt );
/*函数用途: 删除地物几何中多边形的环
输入参数: 1.int hGeom   地物几何句柄
          2.int polygonAt  多边形在地物内的序号( 从0开始 );
          3.int ringAt     环在多边形内的序号( 从0开始 );
输出参数:
返 回 值: 无
备  注:
*/
int WsDeleteStyle( int hLayer, int nID );
/*函数用途: 根据成名和样式ID删除样式
输入参数: 1.int hLayer;       层句柄
          2.int nID;             样式ID
输出参数: 无
返 回 值: 成功返回TRUE,否则返回FALSE
备  注:   如果输入的nID为0,则删除最后一个
*/
int WsEmptyLayer( int hLayer );
/*函数用途: 清空内存中层的地物和文字数据
输入参数: 1.int hLayer     层句柄
输出参数: 无
返 回 值: 成功返回TRUE,否则返回FALSE
备  注:     仅清空地物和文字, 保留样式
*/
int WsExecuteWalkSQL( int hDb, string strSQL, int bWarning );
/*函数用途: 直接执行SQL语句
输入参数: 1.int hDb          数据库句柄
          2.string SQL          SQL语句
          3.bool bWarning       若语句有错给出警告框
输出参数: 无
返 回 值: 正确执行了SQL语句返回TRUE,否则返回FALSE
备  注: strSQL不得含WalkSQL关键字, 否则请使用WsExecuteWalkSQLProc
*/
int WsExecuteWalkSQLProc( int hDb, string strWalkSQLProc, string strParam, int bStepStop );
/*函数用途: 执行WalkSQL存储过程
输入参数: 1.int hDb              数据库句柄
          2.string strWalkSQLProc    Walk存储过程体
          3.string strParam         Walk存储过程的参数
          4.int bStepStop           是否单步执行
输出参数: 无
返 回 值: 正确执行了Walk存储过程返回TRUE,否则返回FALSE
备  注:   无
*/
int WsExecWalkScript( string scriptfile );
/*函数用途: 执行WalkScript脚本
输入参数: scriptfile 文件名
           scriptfile如果是绝对路径则找找看是否存在, 存在就直接执行；
           如果不存在则去 <执行程序目录>下的\walkScript 中去查找相同文件名称的文件；
           找到则执行, 否则提示文件不存在
输出参数:
返 回 值: 非0成功, 0—失败
备    注:
*/
void WsFreeGeometry( int hGeom );
/*函数用途: 释放( 由WsCreateGeometry创建的 )地物几何体
输入参数: 1.int hGeom          要释放的地物几何体句柄
输出参数:
返 回 值: 无
备  注: 释放后的句柄不能在使用.
*/
void WsFreeParts( int hParts );
/*函数用途: 释放( 由WsCreateParts创建的 )walkParts几何体
输入参数: 1.int hParts              要释放的walkParts句柄
输出参数:
返 回 值: 无
备  注: 释放后的句柄不能再使用.
*/
int WsGetAction();
/*函数用途: 获取当前交互式输入的动作类型
输入参数: 无
输出参数: 无
返 回 值: 动作类型
备  注:   无
*/
array WsGetAdjPolygonsByLine( int hLine, int hAreaLayer, double eps );
/*函数用途: 从线层上获取以指定点为端点的线( FeatureId );
输入参数: 1.int hLine             线地物
          2.int hAreaLayer        线层句柄
          4.double eps               点与线端点重合的限差
返 回 值: 左图斑array[0]和右图斑array[1], 若其中为0, 表明不存在
*/
string WsGetAnnotationInfo( int hLayer, int annotationID, int infoMask );
/*函数用途: 获取标注信息( 返回字符串 );
输入参数: 1.int hLayer:    层句柄
          2.int annotationID: 标注ID
          3.int infoMask:     要获取的信息标识
输出参数: 无
返 回 值: 标注信息
备  注: infoMask信息标识:
          0: 标注类型( 0--Text, 或1--Image );
          1: 文字串( 或影像路径 );
          2: 四角坐标串为:( 左上E, 左上N, 右上E, 右上N, 右下E, 右下N,… );
                        以‘,’分隔, 从左上角开始顺时针4个角点坐标.
*/
array WsGetAnnotations( int hLayer );
/*函数用途: 获取层中所有标注的ID
输入参数: 1.int hLayer      层句柄
输出参数: 1.array & oAnnotationIDs   标注ID数组
返 回 值: 地物数
备  注:   无
*/
array WsGetAnnotationSelection( int hLayer );
/*函数用途: 获取层中被选中的标注的ID数组
输入参数: 1.int hLayer     层句柄
输出参数: 1.array & oAnnotationIDs  标注ID数组
返 回 值: 选中标注的个数
备  注:   无
*/
string WsGetAppFolder();
/*函数用途: 获得应用程序所在文件目录
输入参数: 无
输出参数: 应用程序所在文件目录路径
返 回 值: 应用程序所在文件目录路径( 绝对路径 );
*/
array WsGetCellsByRange( int hLayer, wkPoint minPt, wkPoint maxPt );
/*函数用途: 获取一个矩形区域那的所有网格单元ID
输入参数: 1.int hLayer        层句柄
          2.wkPoint minPt        矩形区域的最小坐标
          3.wkPoint maxPt        矩形区域的最大坐标
输出参数:
返 回 值: array                  网格单元ID数组
备  注: 无
*/
int WsGetEasyShow();
/*函数用途: 设定是否用清楚式样显示
输入参数:
输出参数:
返 回 值: 返回是否已经进行了清楚式样控制
备    注: 无
*/
int WsGetFeatureGeometry( int hLayer, int nFeatureID );
/*函数用途: 获取地物中的几何体
输入参数: 1.int hLayer       层句柄
          2.int nFeatureID       地物ID
输出参数:
返 回 值: Geometry 句柄
备  注: 参见地物几何Geometry的说明
*/
string WsGetFeatureProperty( int hLayer, int nFeatureID, string strFieldName );
/*函数用途: 获取地物的属性信息
输入参数: 1.int hLayer     层句柄
          2.int nFeatureID          地物ID
          3.string strFieldName     字段名
输出参数:
返 回 值: 地物属性值
备  注: 无
*/
array WsGetFeatures( int hLayer );
/*函数用途: 获取层中所有地物的ID
输入参数: 1.int hLayer     层句柄
输出参数:
返 回 值: array     地物ID数组
备  注: 无
*/
array WsGetFeatureSelection( int hLayer );
/*函数用途: 获取层中被选中的地物的ID数组
输入参数: 1.int hLayer    层句柄
输出参数:
返 回 值: array     地物ID数组
备  注: 无
*/
int WsGetFeatureStyleID( int hLayer, int nFeatureID );
/*函数用途: 获取地物所用样式ID
输入参数: 1.int hLayer        层句柄
          2.int nFeatureID        地物ID
输出参数: 无
返 回 值: 式样ID
备  注:   无
*/
array WsGetFeatureTarget( int hLayer );
/*函数用途: 获取层中被目标的地物的ID数组
输入参数: 1.int hLayer       层句柄
输出参数:
返 回 值: array       地物ID数组
备  注: 无
*/
double WsGetFSysSCale();
/*函数用途: 得到当前的系统比例尺
输入参数:
输出参数:
返 回 值: 当前的系统比例尺
*/
int WsGetGeometry9I( int hGeomA, int hGeomB, double eps );
/*函数用途: 获取地物A与地物B的9i( 九交 )关系
输入参数: 1.int hGeomA          地物A几何体句柄
          2.int hGeomB          地物B几何体句柄
          3.double eps             容差
输出参数:
返 回 值:
    外触( 6--wk9iOuterTouch );
    内触( 5--wk9iInnerTouch );
    相触( 4--wk9iTouch );
    相交( 3--wk9iIntersect );
    包含( 2--wk9iContain );
    相等( 1--wk9iEqual );
    无交( 0--wk9iNull );
备  注:
*/
int WsGetGeometry9IEx( int hGeomA, int hGeomB, double eps, int &AcontainB, int &lineTouch, int &pointTouch );
/*函数用途: 获取地物A与地物B的9i( 九交 )关系以及附加信息
输入参数: 1.int hGeomA          地物A几何体句柄
          2.int hGeomB          地物B几何体句柄
          3.double eps             容差
输出参数: 1.int &AcontainB         是否A包含B
          2.int &lineTouch         是否含线触
          3.int &pointTouch        是否含点触
返 回 值: 同 WsGetGeometry9I
*/
double WsGetGeometryArea( int hGeom );
/*函数用途: 获取地物面积值
输入参数: 1.int hGeom              地物几何体句柄
输出参数: 无
返 回 值: 面积值
备  注:   无
*/
double WsGetGeometryArea2( int hGeom, double dn, double de, int b54, int bDegree );
/*函数用途: 计算地物几何的椭球面积
输入参数: 1.int hGeom       地物几何体句柄
          2.double dn, de      几何坐标转为赤道和含500公里标准高斯
                               坐标所需平移量
          4.int b54            1—计算54椭球, 0—计算80椭球面积
          5.bDegree            几何体坐标以1—度, 0—米为单位
输出参数: 无
返 回 值: 椭球面积
备  注:
*/
wkPoint WsGetGeometryBounds( int hGeom, int bMinPt );
/*函数用途: 获取地物外包矩形
输入参数: 1.int hGeom        地物几何体句柄
          2.bMinPt              若为1获取左下角, 若为0获取右上角
输出参数: 无
返 回 值: 左下角( bMinPt=1 ) 或 右上角( bMinPt=0 );
备  注: 无
*/
wkPoint WsGetGeometryCenter( int hGeom );
/*函数用途: 获取地物中心
输入参数: 1.int hGeom              地物几何体句柄
输出参数: 无
返 回 值: 中心点坐标
备  注:   无
*/
double WsGetGeometryPerimeter( int hGeom );
/*函数用途: 获取地物周长
输入参数: 1.int hGeom              地物几何体句柄
输出参数: 无
返 回 值: 地物周长
备  注:   无
*/
wkPoint WsGetGeometryPointAt( int hGeom, int pointAt );
/*函数用途: 获取点地物中点
输入参数: 1.int hGeom         地物几何体句柄
          2.int pointAt          点在地物几何体中的序号( 从0开始 );
输出参数:
返 回 值: 点坐标
备  注:
*/
int WsGetGeometryPointCount( int hGeom );
/*函数用途: 获取地物几何中的点个数
输入参数: 1.int hGeom          几何体句柄
输出参数:
返 回 值: 点个数( 有向点为2 );
备  注:  线中的点不在此统计
    GeometryPoint 指点地物Geometry中的点( 与walkPoints中的Point不同 );
*/
int WsGetGeometryType( int hGeom );
/*函数用途: 获取地物的几何类型
输入参数: 1.int hGeom         地物几何体句柄
输出参数:
返 回 值: 地物几何类型( 1—点, 2—线, 4—面/环, 1|2|4组合—混合类型 );
备  注:
*/
int WsGetInputType();
/*函数用途: 获取当前交互式输入的地物几何的拟合类型
输入参数: 无
输出参数: 无
返 回 值: 地物几何的拟合类型, 详见备注
备  注:   无
*/
wkPoint WsGetLayerBounds( int hLayer, int bMinPt );
/*函数用途: 获取层的加载到内存的地物和文字的外包盒的对角点
输入参数: 1.int hLayer     层句柄
          2.bMinPt             若为1获取左下角, 若为0获取右上角
输出参数: 无
返 回 值: 左下角( bMinPt=1 ) 或 右上角( bMinPt=0 );
备  注:   是实际坐标系的坐标值
*/
array WsGetLayerFieldNames( int hLayer );
/*函数用途: 返回层在数据库中的字段名集合
输入参数: 1.int hLayer      层句柄
          2.array &fldNames
输出参数: 无
返 回 值: 字段名集合
备  注:   无
*/
string WsGetLayerName( int hLayer );
/*函数用途: 获取层句柄
输入参数: 1.int hLayer;    层句柄
输出参数: 无
返 回 值: 层句柄
备  注:   无
*/
int WsGetLayerOrder( int hLayer );
/*函数用途: 获取层在当前空间中的循序位置
输入参数: 1.int hLayer    层句柄
输出参数: 无
返 回 值: 层在所有层中的序号( 从0开始 ), 若返回-1, 表明该层不存在
备  注:   无
*/
int WsGetLayersFirst();
/*函数用途: 从WorkSpace中读取第一个层
输入参数: 无
输出参数: 无
返 回 值: 层的句柄
备  注:    无
*/
int WsGetLayersNext( int hPrevLayer );
/*函数用途: 从Walkspace中读取参数hPrevLayer的基准层的后一个层
输入参数: 1.hPrevLayer          基准层的句柄
输出参数: 无
返 回 值: 成功读取后返回得到层的句柄,否则返回0
备  注:   无
*/
int WsGetLayersOne( string layerName, int hDb );
/*函数用途: 获取WorkSpace中一个层
输入参数: 1.layerName      层句柄
          2.hDb             层所在的数据库.
                             若hDb=0, 取WorkSpace中的第一个库,
                             否则hDb必须存在于WorkSpace中.
输出参数: 无
返 回 值: 若指定的层在Workspace中则返回该层的句柄, 否则返回0
备  注:   若该层未加入Workspace, 则不加入(与WsAddLayersOne不同);
*/
int WsGetLayerState( int hLayer );
/*函数用途: 获取层的状态
输入参数: 1.int hLayer    层句柄
输出参数: 无
返 回 值:  层状态, 参考SetLayerState();
备  注:     无
*/
int WsGetLineByHeads( wkPoint head, wkPoint tail, int hLineLayer, double eps );
/*函数用途: 从线层上获取以指定点为端点的线( FeatureId );
输入参数: 1.wkPoint head         端点
          2.wkPoint tail         端点
          3.int hLineLayer    线层句柄
          4.double eps           点与线端点重合的限差
返 回 值: 线层中的线地物id.【注意】若线以head为头, tail为尾, id>0；反之id<0.
*/
int WsGetPartsAt( int hGeom, int nPartsAt );
/*函数用途: 获取某个Parts的句柄
输入参数: 1.int hGeom          地物几何体句柄
          2.int nPartsAt          第几个Parts
输出参数: 无
返 回 值: parts句柄
备  注: 无
*/
int WsGetPartsCount( int hGeom );
/*函数用途: 获取地物的Parts个数
输入参数: 1.int hGeom          地物几何体句柄
输出参数:
返 回 值: Parts个数
备  注: 无
*/
wkPoint WsGetPointAt( int hParts, int nPointsAt, int nPointAt );
/*函数用途: 获取地物中某个Parts的某个 wkPoints的某个 wkPoint的坐标值
输入参数: 1.int hParts        walkParts几何体句柄
          2.int nPointsAt        第几个 wkPoints
          3.int nPointAt         第几个 wkPoint
输出参数: 无
返 回 值: 点坐标
备  注:
*/
int WsGetPointCount( int hParts, int nPointsAt );
/*函数用途: 获取地物的某个Parts的某个 wkPoints的点数
输入参数: 1.int hParts      walkParts几何体句柄
          2.int n wkPointsAt   第几个 wkPoints
输出参数: 无
返 回 值:  wkPoints 的点数
备  注:
*/
array WsGetPointsAt( int hParts, int nPointsAt );
/*函数用途: 获取地物中某个Parts中的某个点的坐标
输入参数: 1.int hParts      walkParts几何体句柄
          2.int n wkPointsAt   第几个 wkPoints
输出参数:
返 回 值: array   点的坐标
备  注: 无
*/
array WsGetPointsAtRing( int hwalkParts, int hPointLayer, double eps, int bClockwise, int nCorner3x3_ltop1_rtop3 );
/*函数用途: 在点层上顺序取与环顶点重合的点序列( 点地物id );
输入参数: 1.int hwalkParts   环( walkParts )句柄
          2.int hPointLayer  点层句柄
          3.double eps              环顶点与点重合的限差
          4.bClockwise              顺序取点是否按顺时针
          5.int nCorner3x3_ltop1_rtop3    取点序列时的首位置:
                  1—左上角    2—上中点    3—右上角    4—左中点
                  5—中心点    6—右中点    7—左下角    8—下中点    9—右下角
返 回 值: 点层中的顶点序列id
*/
int WsGetPointsCount( int hParts );
/*函数用途: 获取地物中某个Parts中的点的个数
输入参数: 1.int hParts         walkParts几何体句柄
输出参数: 无
返 回 值: 点的个数
备  注:   无
*/
int WsGetPointsLineType( int hParts, int nPointsAt );
/*函数用途: 获取地物中某个Parts中的某个 wkPoints上是什么拟合类型
输入参数: 1.int hParts      walkParts几何体句柄
          2.int nPointsAt      第几个 wkPoints
输出参数: 无
返 回 值: 拟合类型,详见备注
备  注: 无
*/
int WsGetPolygonCount( int hGeom );
/*函数用途: 获取地物几何中的多边形个数
输入参数: 1.int hGeom        几何体句柄
输出参数:
返 回 值: 多边形个数
备  注: 面有多个polygon；polygon有多个ring；ring( 与parts等价 )有多个points；points有多个point；点有多个point.
*/
int WsGetPolygonRingAt( int hGeom, int polygonAt, int ringAt );
/*函数用途: 获取地物几何中多边形的环句柄
输入参数: 1.int hGeom          地物几何句柄
          2.int polygonAt         多边形在地物内的序号( 从0开始 );
          3.int ringAt            环在多边形内的序号( 从0开始 );
输出参数:
返 回 值: walkParts句柄
备  注:
*/
int WsGetPolygonRingCount( int hGeom, int polygonAt );
/*函数用途: 获取地物几何中多边形的环数
输入参数: 1.int hGeom          地物几何句柄
          2.int polygonAt         多边形在地物内的序号( 从0开始 );
输出参数:
返 回 值: 环的个数
备  注:
*/
int WsGetShowTipsState();
/*函数用途: 得到地物提示状态( 鼠标在主窗口移动时的地物提示 );
输入参数:
输出参数:
返 回 值:
              0—无地物提示,
              1—提示地物的属性( 标签 ),
              2—地物所在层和式样名
备    注: 无
*/
int WsGetSnapState();
/*函数用途: 获取捕获状态
输入参数: 无
输出参数: 无
返 回 值: 是否处于捕获状态,其实是BOOL类型
备  注:   无
*/
int WsGetSnapType();
/*函数用途: 获取捕获状态类型
输入参数: 无
输出参数: 无
返 回 值: 捕获状态类型
备  注:   无
*/
int WsGetStyleBackColor( int hLayer, int nStyleID );
/*函数用途: 获取一个样式的背景色.
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
输出参数:
返 回 值: 颜色值
备  注: 点、线、面文字式样的背景色
*/
int WsGetStyleColor( int hLayer, int nStyleID );
/*函数用途: 获取一个样式的主色.
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
输出参数:
返 回 值: 颜色值
备  注: 对于线式样为线色；面式样为面色；点式样为点色；文字式样为字色
*/
int WsGetStyleDefault( int hLayer, int nType );
/*函数用途: 获取一个层中一类样式的默认样式ID
输入参数: 1.int hLayer;       层句柄
          2.int nType            样式类型
输出参数:
返 回 值: 默认样式的ID
备  注:   无
*/
int WsGetStyleEx( int hLayer, int nStyleID, int styleMask );
/*函数用途: 获取一个样式的扩展属性.
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
          3.int styleMask        扩展式样标识
输出参数:
返 回 值: 属性值
备  注: 式样的扩展属性以及标识包括:
    10--SizeUnit 尺寸单位
    11—Transparent 透明, 或文字是否加框
    12—LineJoin 线折角绘法, 或文字是否加下划线
    13—LineAlign 线端点绘法, 或文字是否加阴影
    14—LineLinearLen 绘GDI+线的色宽
    15—LineStyle 线( 面边界 )式样号
    16—LineColor 线( 面边界 )颜色
    17—LineBackColor 线( 面边界 )背景色
    18—LineTransparent 线( 面边界 )透明
*/
string WsGetStyleName( int hLayer, int nStyleID );
/*函数用途: 获取一个样式的名字
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
输出参数:
返 回 值: 样式名
备  注:   无
*/
string WsGetStyleNote( int hLayer, int nStyleID );
/*函数用途: 获取一个样式的别名
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
输出参数:
返 回 值: 样式别名
备  注:   无
*/
array WsGetStyles( int hLayer );
/*函数用途: 获取一个层中所有样式的ID
输入参数: STRING    strLayerName    基准层的层句柄
输出参数: array & oStyleIDs    样式ID数组
返 回 值: 如果成功获取返回样式个数, 否则返回-1
备  注: 无
*/
int WsGetStyleSize( int hLayer, int nStyleID );
/*函数用途: 获取一个样式的尺寸.
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
输出参数:
返 回 值: 尺寸值
备  注: 对于线式样为线宽；面式样为面边界线宽；点式样为符号高；文字式样为字高
*/
string WsGetStyleStyle( int hLayer, int nStyleID );
/*函数用途: 获取一个样式的式样值.
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
输出参数:
返 回 值: 式样值
备  注:   对于线式样为线号LineStyle
          面式样为面填充号RegionPattern
          点式样为符号号SymbolCharacter
          文字式样为字体名font face name
          位图符号SymbolBitmapName
*/
int WsGetStyleType( int hLayer, int nStyleID );
/*函数用途: 获取一个样式的类型
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
输出参数:
返 回 值: 样式名
备  注:   无
*/
int WsGetSysRefGridState();
/*函数用途: 得到系统参考网格显示状态
输入参数:
输出参数:
返 回 值: 系统参考网格正在显示返回TRUE,否则返回FALSE
备    注: 无
*/
int WsGetTextBlkEx( int hLayer, int nAnnotationID, int enumMask );
/*函数用途: 获取Block Text的扩展属性值
输入参数: 1.int hLayer;      层句柄
          2.int nAnnotationID;  标注ID
          3.int enumMask        扩展属性标识
输出参数: 无
返 回 值: 扩展属性值( 另见说明 );
备  注:   替换Xb中所有对Block Text的扩展属性取值/*函数
*/
wkPoint WsGetTextRefPnt( int hLayer, int nAnnotationID );
/*函数用途: 获取标注参考点坐标
输入参数: 1.int hLayer;       层句柄
          2.int nAnnotationID;   标注ID
输出参数: 无
返 回 值: 参考点坐标
备  注:   只针对Block Text的nAnnotation
*/
wkPoint WsGetViewBox( int bMinPt );
/*函数用途: 得到实际坐标系内的视图盒的两个对角点坐标
输入参数: int bMinPt
              1获取左下角坐标;
              0获取右上角坐标
输出参数: 无
返 回 值: 左下角坐标, 或右上角坐标
备  注:   无
*/
wkPoint WsGetViewCenter();
/*函数用途: 得到显示区域中心点的坐标值
输入参数: 无
输出参数: 无
返 回 值: 坐标值
备  注:   无
*/
double WsGetViewScale();
/*函数用途: 获取显示比例
输入参数: 无
输出参数: 无
返 回 值: 显示比例
备  注:   无
*/
int WsGetWalkDb( int nDbIndex );
/*函数用途: 获取当前WorkSpace中的Walk数据库句柄
输入参数: nDbIndex    数据库号( 从0开始 );
输出参数: 无
返 回 值: 数据库句柄.0表明无数据库
备  注:
          置 nDbIndex= -1 可获取并打开Walk模板库,
            使用完成后, 必须调用 WsCloseWalkDb 来关闭打开的Walk模板库.
            注意: 若获取的是当前WorkSpace中的Walk数据库, 则不得关闭Walk数据库.
*/
int WsGetWalkDbInLayer( int hLayer );
/*函数用途: 获取层所隶属的数据库的数据库句柄
输入参数: hLayer       层句柄
输出参数: 无
返 回 值: 数据库句柄
备  注: 无
*/
string WsGetWalkDbName( int hDb );
/*函数用途: 获取Walk数据库名
输入参数: hDb    数据库句柄
输出参数: 无
返 回 值: 数据库名
备  注:
*/
int WsGetWalkDbType( int hDb );
/*函数用途: 获取Walk数据库类型
输入参数: hDb        数据库句柄
输出参数: 无
返 回 值: 数据库类型
备  注:   参见数据库类型说明
*/
array WsGetWalkSQLData( int hDb, string strSQL, int nMaxCount );
/*函数用途: 根据Sql语句读取数据库内容,可以带obj.字段
输入参数: 1.int hDb        数据库句柄
          2.string strSQL      SQL语句
          3.Long nMaxCount     允许读取的最大记录数
输出参数:
返 回 值: array    记录所有字段的的文本信息数组,如果
                   数据库中字段内容是二进制数据,则数组单元文本内容是"二进制数据"
*/
void WsInsertGeometryPointAt( int hGeom, int pointAt, wkPoint point );
/*函数用途: 向地物中插点
输入参数: 1.int hGeom         地物几何体句柄
              2.int pointAt      点在地物几何体中的序号( 从0开始 );
              3.wkPoint point    插入点的坐标
输出参数:
返 回 值:
备  注:
*/
int WsInsertPointAt( int hParts, int nPointsAt, int nPointAt, wkPoint pt );
/*函数用途: 在地物的某个Parts的某个 wkPoints中插入一个 wkPoint
输入参数: 1.int hParts      walkParts几何体句柄
          2.int nPointsAt      第几个 wkPoints
          3.int nPointAt       作为第几个点插入
          4.wkPoint pt         点坐标
输出参数: 无
返 回 值: 如果成功插入返回TRUE,否则返回FALSE
备  注:
*/
int WsInsertPointsAt( int hParts, int nPointsAt, int nLineType, array oPoints );
/*函数用途: 在地物的某个Parts中插入一个 wkPoints
输入参数: 1.int hParts      walkParts几何体句柄
          2.int nPointsAt      第几个 wkPoints
          3.int nLineType      拟合类型,详见备注
输出参数: 无
返 回 值: 如果成功插入返回TRUE,否则返回FALSE
备  注: nLineType -- 点流的线型( 线的拟合类型 );
              wkLineTypePoint      =0,    //点
              wkLineTypeStraight   =1,    //折线
              wkLineType3PArc      =3,    //3点弧
              wkLineType3PCircle   =6,    //3点圆
              wkLineTypeStrainCurve=10, //样条
*/
void WsInsertPolygonRing( int hGeom, int polygonAt, int bHole, int hRingParts );
/*函数用途: 插入环到地物几何体中
输入参数: 1.int hGeom         地物几何体句柄
          2.int polygonAt        多边形在地物内的序号( 从0开始 );
          3.int bHole            要插的环是否为洞
          4.int hRingParts    环句柄
输出参数:
返 回 值: 无
备  注:  ring 与 parts 是等价的, 但 ring 必须闭合
*/
int WsIsLegendLayer( int hLayer );
/*函数用途: 判断是否为专题图
输入参数: 1.int hLayer       层句柄
输出参数:
返 回 值: 是专题图显示返回1,否则返回0
*/
int WsIsPartsARing( int hGeom, int nPartsAt );
/*函数用途: 某个Parts是否为环( 多边形 );
输入参数: 1.int hGeom          地物几何体句柄
          2.int nPartsAt          第几个Parts
输出参数: 无
返 回 值: Parts为环返回TRUE,否则返回FALSE
备  注: 无
*/
int WsIsStyleDefault( int hLayer, int nStyleID );
/*函数用途: 判断一个样式是不是默认样式
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         需要判断的样式ID
输出参数: 无
返 回 值: 默认样式返回TRUE,否则返回FALSE
备  注: 无
*/
int WsLoadByCells( int hLayer, array oCellIDs );
/*函数用途: 根据网格单元加载层中的数据
输入参数: 1.int hLayer       层句柄
          2.array & oCellIDs    网格单元ID数组或者单个CellID
输出参数: 无
返 回 值: 如果成功加载返回TRUE,否则返回FALSE
备  注: 无
*/
int WsLoadLayerByProperty( int hLayer, string strFeaFilter, string strAnnFilter );
/*函数用途: 按条件加载数据到层中
输入参数: 1.int hLayer    层句柄
          2.string strFeaFilter   地物加载条件
          3.string strProperty    文字加载条件
输出参数: 无
返 回 值: 如果成功保存返回TRUE,否则返回FALSE
备  注:   加载条件不要前置 where.
*/
void WsOpenCoordInputDlg();
/*函数用途: 打开坐标输入对话框
输入参数: 无
输出参数:
返 回 值: 无
*/
int WsOpenWalkDb( string strDBName, int nDBType );
/*函数用途: 新打开一个数据库( 未加入WorkSpace, 若要加入则在执行该/*函数后调用 WsAddWalkDb );
输入参数: 1.string strDBName       数据库名
          2.int nDBType            数据库类型,详见备注
输出参数: 无
返 回 值: 打开成功返回数据库句柄,否则返回0
备  注:   打开的数据库未加入WorkSpace, 若要加入则在执行该/*函数后调用 WsAddWalkDb
*/
void WsOpenWksByName( string strFileName );
/*函数用途: 打开指定文件名的WorkSapce
输入参数: 1.string strFileName;    wks文件名
输出参数: 无
返 回 值: 成功打开后返回TRUE,否则返回FALSE
备  注:   无
*/
void WsOpenWksFile();
/*函数用途: 弹出文件打开对话框,选择打开wks文件
输入参数: 无
输出参数: 无
返 回 值: 如果成功打开TRUE,否则返回FALSE
备  注:   无
*/
int WsPickStyle( int hLayer, int nStyleID );
/*函数用途: 显示一个样式的设置界面,可以对样式进行设置
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
输出参数: 无
返 回 值: 成功显示设置界面后返回TRUE,否则返回FALSE
备  注:   无
*/
void WsPrintViewMap();
/*函数用途: 用于打印当前打开的WorkSpace
输入参数: 无
输出参数: 无
返 回 值: 无
备  注:   模仿CView的OnFilePrint()/*函数
*/
void WsPutGeometryInOrder( int hGeom );
/*函数用途: 把一个地物中的Parts的所有 wkPoints做排序,使 wkPoints首尾相接
输入参数: 1.int hGeom        地物几何体句柄
输出参数: 无
返 回 值:
备  注: 无
*/
void WsRefreshView( int bInvalidate );
/*函数用途: 刷新视图显示
输入参数: int bInvalidate  是否擦除更新区域的背景,实际上是BOOL类型
输出参数: 无
返 回 值: 无
备  注:   类似CWnd::Invalidate();
*/
int WsRemoveLayersOne( int hLayer );
/*函数用途: 在WorkSpace移出一个层
输入参数: 1.int hLayer       层句柄
输出参数: 无
返 回 值: 成功移出返回TRUE,否则返回FALSE
备  注:   只是移出WorkSapce,在数据库中还有改层数据
*/
int WsReplacePointAt( int hParts, int nPointsAt, int nPointAt, wkPoint pt );
/*函数用途: 替换地物的某个Parts的某个 wkPoints的一个 wkPoint
输入参数: 1.int hParts     walkParts几何体句柄
          2.int nPointsAt     第几个 wkPoints
          3.int nPointAt      替换第几个点
          4.wkPoint pt        新坐标值
输出参数: 无
返 回 值: 如果成功替换返回TRUE,否则返回FALSE
备  注:
*/
int WsReplacePointsAt( int hParts, int nPointsAt, int nLineType, array oPoints );
/*函数用途: 更新Parts的点流
输入参数: 1.int hParts      walkParts几何体句柄
          2.int nPointsAt      第几个 wkPoints
          3.int nLineType      点流的线型
          4.array oPoints      点坐标流
输出参数: 无
返 回 值: 如果成功删除返回TRUE,否则返回FALSE
备  注: 无
*/
void WsResetGeometry( int hGeom );
/*函数用途: 清空地物几何体( 并未释放句柄 );
输入参数: 1.int hGeom          要清空的地物几何体句柄
输出参数:
返 回 值: 无
备  注: 释放地物几何体中坐标占用的空间, 但没有释放句柄占用的空间.
*/
int WsSaveLayer( int hLayer );
/*函数用途: 保存一个层数据到数据库中
输入参数: 1.int hLayer    层句柄
输出参数: 无
返 回 值: 如果成功保存返回TRUE,否则返回FALSE
备  注:   无
*/
void WsSaveWks();
/*函数用途: 保存通过文件打开界面打开wks文件
输入参数: 无
输出参数: 无
返 回 值:
备  注:   无
*/
void WsSaveWksAs( string strFileName );
/*函数用途: 保存当前的WorkSpace到文件
输入参数: 1.string strFileName;    保存WorkSpace的文件名
输出参数: 无
返 回 值:
备  注:   无
*/
array WsSearchFeatureAtPoint( int hLayer, wkPoint pt );
/*函数用途: 获取一个通过某个点的所有地物ID
输入参数: 1.int hLayer    层句柄
          2.wkPoint pt       点的坐标
输出参数:
返 回 值: array          地物ID数组
备  注:   无
*/
array WsSearchFeatureWithinRect( int hLayer, wkPoint minPt, wkPoint maxPt );
/*函数用途: 获取一个矩形范围内及部分包含的所有地物ID
输入参数: 1.int hLayer       层句柄
          2.wkPoint minPt        矩形左下角坐标
          3.wkPoint maxPt        矩形右上角坐标
输出参数:
返 回 值: array          地物ID数组
备  注: 无
*/
void WsSetAction( int nNewValue );
/*函数用途: 设置当前交互式输入的动作类型,并对动作类型进行初始化
输入参数: nNewValue    动作类型
输出参数: 无
返 回 值: 无
备  注:   无
*/
void WsSetAnnotationInfo( int hLayer, int annotationID, int infoMask, string info );
/*函数用途: 设置标注信息( 对加载的标注对象进行修改 );
输入参数: 1.int hLayer:     层句柄
          2.int annotationID:  标注ID
          3.int infoMask:      要设置的信息标识
          4.string info:       要设置的信息
输出参数: 无
返 回 值: 无
备  注:   infoMask信息标识, 参见 WsGetAnnotationInfo.
          若设置四角坐标串( infoMask=2 ), 对文字串则仅设置标注参考点坐标( 同WsSetTextRefPnt ).
*/
void WsSetEasyShow( int nNewValue );
/*函数用途: 设定是否用清楚式样显示
输入参数: 1.int nNewValue
              TRUE: 清楚式样;
              FASLE: 原始式样
输出参数:
返 回 值:
备    注: 无
*/
void WsSetFeatureProperty( int hLayer, int nFeatureID, string strFieldName, string strProperty );
/*函数用途: 设置地物的属性信息
输入参数: 1.int hLayer        层句柄
          2.int nFeatureID             地物ID
          3.string strFieldName        字段名
          4.string strProeprty         字段的属性
输出参数: 无
返 回 值: 如果设置成功返回TRUE,否则返回FALSE
备  注: 无
*/
void WsSetFeatureStyleID( int hLayer, int nFeatureID, int nStyleID );
/*函数用途: 设置地物所用样式ID
输入参数: 1.int hLayer       层句柄
          2.int nFeatureID       地物ID
          3.int nStyleID         样式ID
输出参数: 无
返 回 值:
备  注:   无
*/
void WsSetFSysSCale( double newValue );
/*函数用途: 设置当前的系统比例尺
输入参数: double newValue  系统比例尺
输出参数:
返 回 值:
*/
void WsSetInputType( int nNewValue );
/*函数用途: 设置当前交互式输入的地物几何的拟合类型
输入参数: nNewValue    拟合类型, 详见备注
输出参数: 无
返 回 值: 无
备  注:   无
*/
int WsSetLabelColor( int hLayer, int nColor );
/*函数用途: 设定自动标签颜色
输入参数: 1.int hLayer  层句柄
          2.int nColor     标注颜色
输出参数:
返 回 值: 成功设置后返回TRUE,否则返回FALSE
备    注: 无
*/
int WsSetLabelField( int hLayer, string strFieldName );
/*函数用途: 设定自动标签属性
输入参数: 1.int hLayer     层句柄
          2.string strFieldName     标注属性
输出参数:
返 回 值: 成功设置后返回TRUE,否则返回FALSE
备    注: 无
*/
int WsSetLabelFontHeight( int hLayer, int nHeight );
/*函数用途: 设定自动标签格网
输入参数: 1.int hLayer    层句柄
          2.int nHeight      标注字高
输出参数:
返 回 值: 成功设置后返回TRUE,否则返回FALSE
备    注: 无
*/
int WsSetLabelGrid( int hLayer, int bGrid );
/*函数用途: 设定自动标签是否格网控制
输入参数: 1.int hLayer      层句柄
          2.int bGrid           标注是否进行格网控制
输出参数:
返 回 值: 成功设置后返回TRUE,否则返回FALSE
备    注: 无
*/
int WsSetLabelGridWidth( int hLayer, int nGridWidth );
/*函数用途: 设定自动标签格网控制参数
输入参数: 1.int hLayer       层句柄
          2.int nGridWidth       标注是否进行格网控制
输出参数:
返 回 值: 成功设置后返回TRUE,否则返回FALSE
备    注: 无
*/
int WsSetLabelZoom( int hLayer, int bLabelZoom );
/*函数用途: 设定自动标签是否比例尺控制
输入参数: 1.int hLayer      层句柄
          2.int bLabelZoom      标注是否进行比例尺控制
输出参数:
返 回 值: 成功设置后返回1, 否则返回0
备    注: 无
*/
void WsSetLayerOrder( int hLayer, int nOrder );
/*函数用途:  设置层在当前空间中的循序位置
输入参数: 1.int hLayer      层句柄
          2.int nOrder          顺序位置(从0开始);
输出参数: 无
返 回 值:
备  注: 无
*/
void WsSetLayerState( int hLayer, int nState );
/*函数用途: 设置层的状态
输入参数: 1.int hLayer      层句柄
          2.int nState          层状态
                        //0x0-不可见
                        //0x1-可见
                        //0x3-可选
                        //0x7-可编
                        //0x9-可见,可标签
                        //0xb-可选,可标签
输出参数: 无
返 回 值: 无
备  注:   无
*/
int WsSetLayerZoom( int hLayer, int bZoom );
/*函数用途: 设定显示是否进行比例尺控制
输入参数: 1.int  hLayer    层句柄
          2.int bZoom        是否进行比例尺控制
输出参数:
返 回 值: 成功设置后返回TRUE,否则返回FALSE
备    注: 无
*/
int WsSetLabelZoomMinMax( int hLayer, int nZoomMin, int nZoomMax );
/*函数用途: 设定自动标签最大和最小比例尺参数
输入参数: 1.int hLayer    层句柄
          2.int nZoomMin       标注最小比例尺
          3.int nZoomMax      注最大比例尺
输出参数:
返 回 值: 成功设置后返回TRUE,否则返回FALSE
备    注: 无
*/
int WsSetLayerZoomMinMax( int hLayer, int nZoomMin, int nZoomMax );
/*函数用途: 设定显示比例尺范围
输入参数: 1.int  hLayer     层句柄
          2.int nZoomMin        显示最小比例尺
          3.int nZoomMax        显示最大比例尺
输出参数:
返 回 值: 成功设置后返回TRUE,否则返回FALSE
备    注: 无
*/
int WsSetLegendStyle( int hLayer, array & oFeatureID, int nStyleID );
/*函数用途: 设定地物的专题式样
输入参数: 1.int hLayer       层句柄
          2.array & oFeatureID  需要设定梯度的地物数组
          3.int nStyleID        设定的样式的梯度
输出参数:
返 回 值: 成功设置后返回TRUE,否则返回FALSE
*/
void WsSetPointsLineType( int hParts, int nPointsAt, int nLineType );
/*函数用途: 设置地物的某个Parts的某个 wkPoints的拟合类型
输入参数: 1.int hParts      walkParts几何体句柄
          2.int nPointsAt      第几个 wkPoints
          3.int nLineType      拟合类型, 备注详见
输出参数: 无
返 回 值:
备  注:   无
*/
void WsSetShowTipsState( int nNewValue );
/*函数用途: 设置地物提示状态( 鼠标在主窗口移动时的地物提示 );
输入参数: int  nNewValue  地物提示状态
                        0—无地物提示,
                        1—提示地物的属性( 标签 ),
                        2—地物所在层和式样名
输出参数:
返 回 值:
备    注: 无
*/
void WsSetSnapState( int nNewValue );
/*函数用途: 设置捕获状态
输入参数: nNewValue    捕获状态, 其实是BOOL类型
输出参数: 无
返 回 值: 无
备  注:   无
*/
void WsSetSnapType( int nNewValue );
/*函数用途: 设置捕获状态类型
输入参数: nNewValue     捕获状态类型
输出参数: 无
返 回 值: 无
备  注:   nNewValue见附表
*/
void WsSetStyleBackColor( int hLayer, int nStyleID, int color );
/*函数用途: 获取一个样式的背景色.
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
          3.int color            颜色值
输出参数:
返 回 值:
备  注: 点、线、面文字式样的背景色
*/
void WsSetStyleColor( int hLayer, int nStyleID, int color );
/*函数用途: 获取一个样式的主色.
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
          3.int color            颜色值
输出参数:
返 回 值:
备  注: 对于线式样为线色；面式样为面色；点式样为点色；文字式样为字色
*/
void WsSetStyleDefault( int hLayer, int nStyleID );
/*函数用途: 设置一个层默认样式
输入参数: 1.int hLayer       层句柄
          2.int nStyleID        默认样式ID
输出参数: 无
返 回 值: 无
备  注: 无
*/
void WsSetStyleEx( int hLayer, int nStyleID, int styleMask, int exStyle );
/*函数用途: 设置一个样式的属性.
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
          3.int styleMask        扩展式样标识
          4.int exStyle          扩展式样值
输出参数:
返 回 值:
备  注: 参见 WsGetStyleEx
*/
void WsSetStyleSize( int hLayer, int nStyleID, int size );
/*函数用途: 获取一个样式的尺寸.
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
          3.int size             尺寸值
输出参数:
返 回 值:
备  注: 参见 WsGetStyleSize
*/
void WsSetStyleStyle( int hLayer, int nStyleID, string style );
/*函数用途: 设置一个样式的式样值.
输入参数: 1.int hLayer;       层句柄
          2.int nStyleID         样式ID
          3.string style         式样值
输出参数:
返 回 值:
备  注: 参见 WsGetStyleStyle
*/
void WsSetSysRefGridState( int nNewValue );
/*函数用途: 设置不系统参考网格显示状态
输入参数:  int nNewValue  系统参考网格是否显示1―显示 0－不显示
输出参数:
返 回 值:
备    注: 无
*/
void WsSetTextBlkEx( int hLayer, int nAnnotationID, int enumMask, int nExValue );
/*函数用途: 设置Block Text的扩展属性值
输入参数: 1.int hLayer;     层句柄
          2.int nAnnotationID; 标注ID
          3.int enumMask       扩展属性标识
          4.int nExValue;      扩展属性值
输出参数: 无
返 回 值: 无
备  注: 替换Xb中所有对Block Text的设置扩展属性值函数
**************************************************
10 iTextInsPos: 标注插入位置
    wkPositionCC = 0,
    wkPositionTL = 1,
    wkPositionTC = 2,
    wkPositionTR = 3,
    wkPositionCL = 4,
    wkPositionCR = 5,
    wkPositionBL = 6,
    wkPositionBC = 7,
    wkPositionBR = 8
11 iTextInsPntX: 标注插入点与插入位置的偏移X
12 iTextInsPntY: 标注插入点与插入位置的偏移Y
13 iTextAngle:     标注的旋转角度( 以0.1度为单位 );
14 iTextFix:     标注的块大小是否随比例缩放
//    文字大小方位属性
15 iTextCharH: 标注的字符高度( 以0.1mm为单位 );
16 iTextLineI:     标注的文本行间隔
17 iTextCharI:     标注的文本的字符间隔
18 iTextrdCharLeft: 标注的文本字头的朝向: 倾斜方向,分为左斜/右斜/垂直/不斜
19 iTextCharAngle: 标注的文本字头的倾斜角度
//    格式属性
20 iTextColTwo: 标注是否使用双栏
21 iTextColStager: 标注两栏是否错行
22 iTextColWidthSet: 标注是否使用栏宽设定
23 iTextCol1Width: 标注的第一栏的栏宽
24 iTextCol2Width: 获取标注的第二栏的栏宽
25 iTextrdALeft: 标注文本左栏对齐方式
26 iTextrdALeft2: 标注文本右栏是对齐方式
    wkAnnotationAlignCenter = 0,
    wkAnnotationAlignLeft=1,
    wkAnnotationAlignRight=2,
    wkAnnotationAlignFit=3
27 iTextBlkBox: 标注是否绘制外包盒
28 iTextLinGapLine: 标注左栏是否绘制行间线
29 iTextLineWidth: 标注线宽
30 iTextColLine: 标注是否绘制栏间线
31 iTextLineRGapLine: 标注右栏是否绘制双数行间线
//    外接线
32 iTextExline: 标注的引出线类型
33 iTextExlineGap: 标注的引出线距参考点间距
34 iTextExlinePos: 标注引出线引向区位选择因子1
          //    引出线的引向区位
          //    选择因子一: 0 - 8 为区位,
          //    选择因子二: 0 - 由因子一决定
          //    1 - 8, 从因子一和因子二中选择距离参考点最近的区位点
          //    9 - 距离参考点最近的区位点
          //    10 - 距离参考点最近的4角区位点
          //    11 - 距离参考点最近的4个边区位点
35 iTextExlinePos2: 标注引出线引向区位选择因子2( 参见上 );
//    外接圆
36 iTextCircle: 取标注是否显示边框外接圆
//    参考地物
37 iTextFeatureID: 标注的地物来源( FeatureID ), 若无参考地物返回0
*/
void WsSetTextRefPnt( int hLayer, int nAnnotationID, wkPoint refPt );
/*函数用途: 设置标注参考点坐标
输入参数: 1.int hLayer;       层句柄
          2.int nAnnotationID;   标注ID
          3.wkPoint refPt:       参考点坐标
输出参数: 无
返 回 值: 无
备  注:   只针对Block Text的nAnnotation
*/
void WsSetViewCenter( wkPoint newValue );
/*函数用途: 设置打印中心点的坐标值
输入参数: double newValue  坐标值
输出参数: 无
返 回 值: 无
备  注:   无
*/
void WsSetViewScale( double newValue );
/*函数用途: 设置显示比例
输入参数: double newValue  显示比例
输出参数: 无
返 回 值: 无
备  注:   无
*/
array WsSortByPolygon(array hPolygonGeoms, int nSortType);
/*函数用途: 对面地物重新排序
输入参数: 1.array polygonGeoms 面地物几何数组
          2.int type 编排顺序的类型
            0 – 弓字形
            1 – Z字形
输出参数: 重排后的顺序
返 回 值: 面地物重排后的顺序
备  注:
*/
int WsStartLegend( int hLayer, int nColor, int nGrade );
/*函数用途: 开始专题图显示, 并且设定基色和颜色梯度级别
输入参数: 1.int hLayer    层句柄
          2.Long nColor      基色
          3.int nGrade     颜色梯度级别
输出参数:
返 回 值: 成功获取后返回TRUE,否则返回FALSE
*/
int WsStopLegend( int hLayer );
/*函数用途: 结束专题图
输入参数: 1.int hLayer       层句柄
输出参数:
返 回 值: 成功设置后返回TRUE,否则返回FALSE
*/
int WsTablerBatchGetset( string table, int dbHandle, array aKeyvals, int bNullfieldGetOnly, int bAskUserSure );
/*函数用途: 按通用属性表设置进行记录集的多属性批量赋值
输入参数:
          table:             表名
          dbHandle:          数据库句柄
          aKeyvals:          要赋值的记录集标识(必须是主键值, 如FeatureID);
          bNullfieldGetOnly: 是否仅对记录中的空值字段进行赋值
          bAskUserSure:      在批量赋值前是否要求用户确认
输出参数:
返 回 值: 非0成功, 0—失败
备    注:
*/
int WsTablerBatchOne( int tbrHandle, array aKeyvals, string fldName, string getset, int bNullfieldGetOnly, int bAskUserSure );
/*函数用途: 对属性表的指定字段进行属性批量赋值
输入参数:
          int tbrHandle:     属性表句柄
          aKeyvals:          要赋值的记录集标识(必须是主键值, 如FeatureID);
          fldName:           要赋值的字段名
          getset:            属性取值语句( 同通用属性表设置 );
          bNullfieldGetOnly: 是否仅对记录中的空值字段进行赋值
          bAskUserSure:      在批量赋值前是否要求用户确认
输出参数:
返 回 值: 非0成功, 0—失败
备    注:
*/
int WsTablerCreate( string table, int dbHandle );
/*函数用途: 创建一个属性表句柄, 供WsTablerBatchOne使用
输入参数:
          table: 表名
          dbHandle: 表所属的数据库句柄
输出参数:
返 回 值:  属性表句柄
备    注:
*/
void WsTablerFree( int tbrHandle );
/*函数用途: 释放由WsTablerCreate创建的属性表句柄
输入参数: int tbrHandle: 属性表句柄
输出参数:
返 回 值: 属性表句柄
备    注:
*/
int WsTrimByPolygon( int hPolyGeom, int hGeom, int out_side );
/*函数用途: 由一个面地物hPolyGeom对地物hGeom进行擦除
输入参数: 1.int hPolyGeom        面地物几何体句柄
          2.int hGeom          要擦除的地物几何体句柄
          3.int out_side              1—擦除地物外部, 0—擦除地物内部
返 回 值: 擦除结果( 地物几何体句柄 ).若返回为0, 则擦除结果为空.
          使用完结果句柄后必须调用WsFreeGeometry释放
*/
int WsUnloadByCells( int hLayer, array oCellIDs );
/*函数用途: 根据网格单元卸载层中的数据
输入参数: 1.int hLayer       层句柄
          2.array & oCellIDs    网格单元ID数组或者单个CellID
输出参数: 无
返 回 值: 如果成功卸载返回TRUE,否则返回FALSE
备  注:   无
*/
int WsUpdateFeature( int hLayer, int nFeatureID, int hNewGeom );
/*函数用途: 获取地物中的几何体
输入参数: 1.int hLayer    层句柄
          2.int nFeatureID   地物ID
          3.int hNewGeom  新的地物几何体句柄
输出参数:
返 回 值: 更新后地物的id
备  注: 关于hGeom参见地物几何Geometry的说明
*/
void WsWalkCloseFile( int file );
/*函数用途: 关闭文件
输入参数:
输出参数:
返 回 值:
*/
void WsWalkCommand( int commandId );
/*函数用途: 调用Walk命令
输入参数:
输出参数:
返 回 值:
*/
int WsWalkEofFile( int file );
/*函数用途: 判断文件是否已经到尾
输入参数:
输出参数:
返 回 值:
*/
string WsWalkFileDlg( int bOpen, string defaultExt, string filter );
/*函数用途: 打开Window的文件对话框, 获得文件名
输入参数: int bOpen              1—打开文件, 0—保存文件
          string defaultExt      文件默认扩展名, 如 "txt"
          string filter          文件类型串, 如:
                                    "Walk Script文件( *.wsp )|*.wsp|"所有文件( *.* )|*.*||"
输出参数:
返 回 值: 文件名( 全路径 ), 若返回空串则用户放弃指定文件名
*/
string WsWalkGetsFile( int file );
/*函数用途: 从文件中获取一行
输入参数:
输出参数:
返 回 值:
*/
string WsWalkInputLineDlg( string title, string initVal );
/*函数用途: 打开单行输入对话框
输入参数: title 对话框标题
          initVal初始化字符串
输出参数:
返 回 值: 用户输入的单行字符串
*/
int WsWalkOpenFile( string filename, string openmode );
/*函数用途: 打开文件
输入参数:
输出参数:
返 回 值:
*/
void WsWalkPutsFile( int file, string line );
/*函数用途: 向文件中写入字符串
输入参数:
输出参数:
返 回 值:
*/
int WsWalkQuestionDlg( string msg );
/*函数用途: 打开Window的消息对话框, 具有Yes和No选项
输入参数: string msg        询问的内容
输出参数:
返 回 值: 用户回答Yes为1, 回答No( 或Cancel )为0
*/
string WsWalkReadIni( string ini, string section, string key, string defaultValue );
/*函数用途: 从INI文件中读取字符串
输入参数:
输出参数:
返 回 值:
*/
string WsWalkSelectLineDlg( string title, array lines, string initLine, int selectOnly );
/*函数用途: 打开多行选一对话框
输入参数: title        对话框标题
          lines        初始列表项
          initLine     初始行
          selectOnly   是否为只选, 1—只选, 0—允许用户输入字符串
输出参数:
返 回 值: 用户输入或选择的单行字符串
*/
void WsWalkSendMessage( int msgId, int wParam, int lParam );
/*函数用途: 向Walk系统发送消息
输入参数:
输出参数:
返 回 值:
*/
int WsWalkShell( string winCommand );
/*函数用途: 调用Windows命令
输入参数: string winCommand     Window shell command
输出参数:
返 回 值:
*/
int WsWalkTableEditor( int hDB, string tableName, string filter );
/*函数用途: 打开通用表属性编辑对话框
输入参数: int hDB        所在数据库
          string tableName  表名
          string filter     表过滤条件
输出参数:
返 回 值: 表编辑对话框打开成功为1, 失败为0
备    注:
功能上分为: 1)按通用属性表设置进行记录集的多属性批量赋值.
            2)自定义属性批量赋值
*/
void WsWalkWriteIni( string ini, string section, string key, string value );
/*函数用途: 向INI文件中写入字符串
输入参数:
输出参数:
返 回 值:
*/
void WsWholeView();
/*函数用途: 调整视图以显示整个WorkSpace
输入参数: 无
输出参数: 无
返 回 值: 无
备  注:   无
*/
void WsWholeViewLayer( int hLayer );
/*函数用途: 在控件内全图显示一个层
输入参数: int hLayer  层句柄
输出参数: 无
返 回 值: 无
备  注:   无
*/

#endif //__WS_FUNCTION_DEFINE_H_
