3.4.5 IFeatureModelLayer
IFeatureModelLayer是要素图层对象。要素图层对象是将矢量图层对象的操作进行统一管理而形成的对象。通过要素图层对象可以对矢量图层中的要素进行添加,更新,编辑,替换,删除等操作。具体使用可参考矢量编辑相关功能。
要素图层对象是在创建矢量图层对象之后,通过MapManagerCOM组件的GetFeatureModelLayer()接口创建的。
1.SetLayerID
说明:
设置关联图层ID。一般在创建要素图层对象之后,系统内部会调用该接口绑定关联矢量图层的ID
语法:
Javascript调用
SetLayerID(id)
C++调用
HRESULT SetLayerID([in] LONG id)
C#调用
void SetLayerID(long id)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
id | long | 图层ID |
2.GetLayerID
说明:
获取关联图层ID。
语法:
Javascript调用
GetLayerID()
C++调用
HRESULT GetLayerID([out,retval] LONG* layerId)
C#调用
long GetLayerID()
返回值: layerId
layerId表示图层ID。
3.GetMaxFeatureID
说明:
获取要素ID的最大值。要素ID是要素的唯一标识。矢量图层添加到场景中之后,矢量图层中加载的要素ID是自增长的,通过该接口可以获取要素ID的最大值,该值也代表已经加载到场景中的要素数量。
语法:
Javascript调用
GetMaxFeatureID()
C++调用
HRESULT GetMaxFeatureID([out,retval] LONG* id)
C#调用
long GetMaxFeatureID()
返回值: id
id表示要素ID的最大值
4.GetFeatureById
说明:
根据ID获取要素对象。
语法:
Javascript调用
GetFeatureById(id, iFeature)
C++调用
HRESULT GetFeatureById([in] LONG id, [in] IUnknown* iFeature, [out,retval] VARIANT_BOOL* state)
C#调用
bool GetFeatureById(long id, IFeature iFeature)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
id | long | 要素ID |
iFeature | IFeature | 要素对象 |
返回值: state
state表示是否成功。true-成功;false-失败。
5.GetFeatureByPick
说明:
根据拾取获取要素对象。调用该接口之前,需通过矢量拾取响应器拾取到要素。
语法:
Javascript调用
GetFeatureByPick(iFeature)
C++调用
HRESULT GetFeatureByPick([in] IUnknown* iFeature, [out,retval] VARIANT_BOOL* state)
C#调用
bool GetFeatureByPick(IFeature iFeature)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
iFeature | IFeature | 要素对象 |
返回值: state
state表示是否成功。true-成功;false-失败。。true-成功;false-失败。
6.DeleteFeature
说明:
删除拾取的要素。调用该接口之前,需通过矢量拾取响应器拾取到要素。
语法:
Javascript调用
DeleteFeature()
C++调用
HRESULT DeleteFeature([out,retval] VARIANT_BOOL* state)
C#调用
bool DeleteFeature()
返回值: state
state表示是否成功。true-成功;false-失败。
7.AddFeature
说明:
添加要素。将要素添加到要素图层对象中,在添加成功之后,会在场景中显示该要素。
语法:
Javascript调用
AddFeature(iFeature)
C++调用
HRESULT AddFeature([in] IUnknown* iFeature)
C#调用
void AddFeature(IFeature iFeature)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
iFeature | IFeature | 要素对象 |
8.SaveLayer
说明:
保存图层。该接口会将所有的修改保存到矢量图层关联的shp文件中。
语法:
Javascript调用
SaveLayer()
C++调用
HRESULT SaveLayer([out,retval] VARIANT_BOOL* state)
C#调用
bool SaveLayer()
返回值: state
state表示是否成功。true-成功;false-失败。
9.SaveAsLayer
说明:
另存图层。该接口会将矢量图层中的所有要素信息另存到指定的shp文件中。如果shp文件不存在,会新建该文件。
语法:
Javascript调用
SaveAsLayer(path)
C++调用
HRESULT SaveAsLayer([in] BSTR path, [out,retval] VARIANT_BOOL* state)
C#调用
bool SaveAsLayer(string path)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
path | string | 矢量文件路径 |
返回值: state
state表示是否成功。true-成功;false-失败。
10.GetNearestFeatureId
说明:
获取距离最近的要素ID。该接口会返回字符串结果,其结构为ID,距离;ID,距离;
。 多个结果中间以;进行分隔。并且会按照距离进行排序,距离最近的结果在最前面。
语法:
Javascript调用
GetNearestFeatureId(posX, posY, posZ, range)
C++调用
HRESULT GetNearestFeatureId([in] DOUBLE posX, [in] DOUBLE posY, [in] DOUBLE posZ, [in] DOUBLE range, [out,retval] BSTR* value)
C#调用
string GetNearestFeatureId(double posX, double posY, double posZ, double range)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
posX | double | 经度坐标 |
posY | double | 纬度坐标 |
posZ | double | 高程坐标 |
range | double | 范围,以XYZ坐标和range构建的查询范围 |
返回值: value
value表示获取的结果。
11.SetHighlight
说明:
设置图层高亮
语法:
Javascript调用
SetHighlight(r, g, b, a, state)
C++调用
HRESULT SetHighlight([in] DOUBLE r, [in] DOUBLE g, [in] DOUBLE b, [in] DOUBLE a, [in] VARIANT_BOOL state)
C#调用
void SetHighlight(double r, double g, double b, double a, bool state)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
r | double | 颜色Red(红色),取值范围在0-1之间 |
g | double | 颜色Green(绿色),取值范围在0-1之间 |
b | double | 颜色Blue(蓝色),取值范围在0-1之间 |
a | double | Alpha,取值范围在0-1之间 |
state | bool | 高亮状态 |
12.GetFeatureSchema
说明:
获取要素属性表头。该接口会反正要素属性表头字符串,字符串结构为 字段名称:字段类型;
,中间以;分隔。
语法:
Javascript调用
GetFeatureSchema()
C++调用
HRESULT GetFeatureSchema([out,retval] BSTR* value)
C#调用
string GetFeatureSchema()
返回值: value
value表示返回的结果值。
13.SetEditType
说明:
设置编辑类型。
语法:
Javascript调用
SetEditType(type)
C++调用
HRESULT SetEditType([in] SHORT type)
C#调用
void SetEditType(short type)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
type | short | 编辑类型 |
编辑类型:
id | 类型 |
---|---|
0 | 无效操作 |
1 | 要素移动 |
2 | 顶点增加 |
3 | 顶点拾取 |
4 | 顶点移动 |
5 | 顶点删除 |
14.GetEditType
说明:
获取当前编辑类型。
语法:
Javascript调用
GetEditType()
C++调用
HRESULT GetEditType([out,retval] SHORT* type)
C#调用
short GetEditType()
返回值: type
type表示返回的编辑类型
编辑类型:
id | 类型 |
---|---|
0 | 无效操作 |
1 | 要素移动 |
2 | 顶点增加 |
3 | 顶点拾取 |
4 | 顶点移动 |
5 | 顶点删除 |
15.SaveVectorEdit
说明:
保存矢量编辑。
语法:
Javascript调用
SaveVectorEdit()
C++调用
HRESULT SaveVectorEdit([out,retval] VARIANT_BOOL* state)
C#调用
bool SaveVectorEdit()
返回值: state
state表示是否成功。true-成功;false-失败。
16.CancelVectorEdit
说明:
取消矢量编辑。
语法:
Javascript调用
CancelVectorEdit()
C++调用
HRESULT CancelVectorEdit([out,retval] VARIANT_BOOL* state)
C#调用
bool CancelVectorEdit()
返回值: state
state表示是否成功。true-成功;false-失败。
17.DeleteFeatureByGeoPos
说明:
根据经纬度删除要素。该接口会根据传入的坐标与相机远截面形成直线,然后与要素图层进行求交,并将求交到的要素进行删除。因此在调用接口之前,需要保证待删除的要素在场景中显示,传入的坐标值也应该能保证会求交到待删除的要素。
语法:
Javascript调用
DeleteFeatureByGeoPos(posX, posY, posZ)
C++调用
HRESULT DeleteFeatureByGeoPos([in] DOUBLE posX, [in] DOUBLE posY, [in] DOUBLE posZ, [out,retval] VARIANT_BOOL* state)
C#调用
bool DeleteFeatureByGeoPos(double posX, double posY, double posZ)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
posX | double | 经度坐标 |
posY | double | 纬度坐标 |
posZ | double | 高程坐标 |
返回值: state
state表示是否成功。true-成功;false-失败。
18.UpdateFeatureByNew
说明:
通过新要素进行要素更新。该接口会用新的要素替换目标要素。如果目标要素不存在,则将新要素添加到要素图层中;如果新要素为空,则只删除目标要素。
语法:
Javascript调用
UpdateFeatureByNew(iOldFeature, iNewFeature)
C++调用
HRESULT UpdateFeatureByNew( [in] IUnknown* iOldFeature, [in] IUnknown* iNewFeature, [out, retval] VARIANT_BOOL* state )
C#调用
bool UpdateFeatureByNew(IFeature iOldFeature, IFeature iNewFeature)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
iOldFeature | IFeature | 目标要素对象,即会被删除的要素对象 |
iNewFeature | IFeature | 新要素对象,即会添加到图层的要素对象 |
返回值: state
state表示是否成功。true-成功;false-失败。
19.UpdateFeatureById
说明:
通过ID进行要素更新。该接口会用新的要素替换传入ID所指向的要素。如果ID指向的要素不存在,则将新要素添加到要素图层中;如果新要素为空,则只删除ID指向的要素。
语法:
Javascript调用
UpdateFeatureById(id, iNewFeature)
C++调用
HRESULT UpdateFeatureById([in] LONG id, [in] IUnknown* iNewFeature, [out, retval] VARIANT_BOOL* state)
C#调用
bool UpdateFeatureById(long id, IFeature iNewFeature)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
id | long | 目标要素ID,即会被删除的要素对象ID |
iNewFeature | IFeature | 新要素对象,即会添加到图层的要素对象 |
返回值: state
state表示是否成功。true-成功;false-失败。
20.CreateFeatureCursor
说明:
创建要素查询游标。根据输入的范围进行要素查询,并创建游标状态。当范围为0,0,0,0时查询整个图层。
语法:
Javascript调用
CreateFeatureCursor(MinXPos, MaxXPos, MinYPos, MaxYPos, Srs)
C++调用
HRESULT CreateFeatureCursor([in] DOUBLE MinXPos, [in] DOUBLE MaxXPos, [in] DOUBLE MinYPos, [in] DOUBLE MaxYPos, [in] BSTR Srs, [out,retval] VARIANT_BOOL* state)
C#调用
bool CreateFeatureCursor(double MinXPos, double MaxXPos, double MinYPos, double MaxYPos, string Srs)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
MinXPos | double | X方向最小值 |
MaxXPos | double | X方向最大值 |
MinYPos | double | Y方向最小值 |
MaxYPos | double | Y方向最大值 |
Srs | string | 坐标参考值 |
返回值: state
state表示是否成功。true-成功;false-失败。
21.GetNextFeature
说明:
获取下一个要素。该接口必须在CreateFeatureCursor()之后调用,获取的要素从该参数返回。
语法:
Javascript调用
GetNextFeature(iFeature)
C++调用
HRESULT GetNextFeature([in] IUnknown* iFeature, [out,retval] VARIANT_BOOL* state)
C#调用
bool GetNextFeature(IFeature iFeature)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
iFeature | IFeature | 要素对象 |
返回值: state
state表示是否成功。true-成功;false-失败。
22.ClearFeatureCursor
说明:
清空游标。在使用完要素查询游标之后,需通过该接口进行游标的清除操作。
语法:
Javascript调用
ClearFeatureCursor()
C++调用
HRESULT ClearFeatureCursor([out,retval] VARIANT_BOOL* state)
C#调用
bool ClearFeatureCursor()
返回值: state
state表示是否成功。true-成功;false-失败。
23.AddField
说明:
添加属性字段。可以为矢量图层添加新的属性字段。添加时可设定属性字段名称、属性字段类型和默认值。
语法:
Javascript调用
AddField(fieldName, fieldType, defaultValue)
C++调用
HRESULT AddField([in] BSTR fieldName, [in] SHORT fieldType, [in] BSTR defaultValue, [out,retval] VARIANT_BOOL* state)
C#调用
bool AddAttribute(string fieldName, short fieldType, string defaultValue)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
fieldName | string | 属性字段名称 |
fieldType | short | 属性值类型。类型见下表 |
defaultValue | string | 属性字段默认值 |
属性值类型
属性值类型 | 数值类型 |
---|---|
1 | int |
2 | long |
3 | float |
4 | double |
5 | string |
6 | bool |
返回值: state
state表示是否添加成功。true-成功; false-失败。
24.DeleteField
说明:
删除属性字段。可以将矢量图层的某个属性字段删除。
语法:
Javascript调用
DeleteField(fieldName)
C++调用
HRESULT DeleteField([in] BSTR fieldName, [out,retval] VARIANT_BOOL* state)
C#调用
bool DeleteField(string fieldName)
参数:
参数名 | 参数类型 | 说明 |
---|---|---|
fieldName | string | 属性字段名称 |
返回值: state
state表示是否删除成功。true-成功; false-失败。