今天我们又来学习一下第三次全国土地调查软件iDATA数据工厂。这是一个将实体添加图形数据库的例子,这例子是一个实体点。和AutoCAD二次开发有点类似,首先创建一个点,然后将点连同地理编码创建为南方iDATA数据工厂的点,使用实体添加函数,提交数据库。其中翻阅iDATA的函数,可以获取得到IDataGeoCode函数有GetDeFaultGeoCode(EntityType type)和iData_GetGeoCode(string entity_name, DbBase pdb = null)。我们使用前者,而前者参数的EntityType是一个枚举类型,看一下IDATA为EntityType都枚举了哪些值。具体如下表所示。
枚举值 | 代码 |
IDATAPOINT | 65537 |
IDATAPOLYLINE | 65538 |
IDATAPOLYGON | 65539 |
IDATATEXT | 65540 |
IDATAIMAGE | 65541 |
IDATADEFAULT | 65542 |
GCDPOINT | 65543 |
从枚举值我们可以看出,分别对应了的数据类型有点、线、面、文字等。然后构造一个IDataPoint,IDataPoint提供了地理编码和位置两个参数的构造函数,只需要添加相应的值即可。类似AutoCAD的AppendEntity,iDATA也提供了添加实体函数IDataAppendEntity,该函数支持两种类型的参数,分别是iDataEntity、List<iDataEntity>。
好了,说了这么多,虽然功能相对简单,但还是可以学习一下,具体代码如下所示。
using Southgis.iData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AddPoint
{
public class Class1
{
private iDataInterface iData = new iDataInterface();
public void AddPoint()
{
Point point;
ErrorType e = this.iData.iDataGetPoint(null,"选择一个需要添加到实体的点",out point);
if (e!=ErrorType.eOk)
{
return;
}
IDataGeoCode geoCode = this.iData.GetDeFaultGeoCode(EntityType.IDATAPOINT);
iDataPoint point_entity = new iDataPoint(geoCode, point);
this.iData.iDataAppendEntity(point_entity);
this.iData.Commit(point_entity, CommitMode.kAppended, false);
this.iData.iDataRegen(true);
}
}
}
更多内容,微信扫二维码关注公众号