首页 / 浏览问题 / 组件GIS / 问题详情
如何保存三维点
22EXP 2023年08月29日
recordset.addnew(),无法添加三维数据 有什么办法添加到数据集中吗? 或者临时存储一系列三维点有什么比较推荐的方式

1个回答

您好,

1.请确认数据集添加的几何对象与数据集类型相同,比如三维点一般添加到三维点数据集,

2.请确认数据源是独占方式打开,而不是只读方式打开

3.recordset的实例化应该用datasetvector.query方法获取

4.添加对象到数据集代码示例:

以下代码示范如何删除一条记录以及添加记录。假设打开一个工作空间 workspace 对象,工作空间中存在一个数据源 datasource 对象

 public void recordsetTest()
 {
        // 从中取出名为“World”(面数据集)的矢量数据集 dataset_world,和名为“Example”(面数据集)的矢量数据集 dataset
        DatasetVector dataset_world = (DatasetVector) datasource.getDatasets().get("World");
        DatasetVector dataset = (DatasetVector) datasource.getDatasets().get("Example");

        // 得到“Example”对应的所有记录集以及“World”中 SmID=1 的记录
        Recordset recordset = dataset.getRecordset(false, CursorType.DYNAMIC);
        Recordset recordset_world = dataset_world.query("SmID=1",CursorType.STATIC);

        // 将记录位置移到第一位
        recordset.moveFirst();

        // 锁定当前记录位置
        recordset.edit();

        // 将当前记录删除
        recordset.delete();

        // 将“World”中 SmID=1 的记录添加到 recordset 中并提交
        Geometry geometry = recordset_world.getGeometry();
        recordset.update();
        recordset.addNew(geometry);
        recordset.update();

        // 关闭记录集,释放几何对象、记录集
        recordset.close();
        geometry.dispose();
        recordset.dispose();
        recordset_world.dispose();
    }
3,690EXP 2023年08月29日
哪有专门的三维点数据数据集?

我要加的是point3d类型
示例代码和我的问题不一样啊,我要加的是geometry3d的衍生类point3d,你上面加的是geometry
要加的是point3d类型的话,point3d不可直接添加为几何对象,直接添加只能以记录集的方式存储,应该用geopoint3D,这个是geometry的子类,还有三维点数据集是矢量数据集的一种

可以新建三维点数据集

具体代码为:

DatasetvectorInfo info = new DatasetVectorInfo()

info.setType(DatasetType.POINT3D),

info.setName("point3d"),

DatasetVector vector = datasets.create(info);

这样就创建了一个三维点数据集了

此外三维点几何对象的构造方法也会用到point3d
...