首页 / 浏览问题 / 桌面GIS / 问题详情
三维模型 生成场景缓存时,对象ID字段只给了SMID等4个选项,能换自定义字段么
马广驰  (12EXP)  才疏学浅
10月20日, 2021
制作三维模型在生成场景缓存时,对象字段id只能选择SMID、SmUserID、SmLibTileID、SmGeometrySize四个字段,且都是32位整型。自己试了试,无法修改字段值,并且无法改变字段的数据类型。我想把对象字段id改为文本类型的可以么?如果不可以的话,我想在前端通过id去选择对象图层并实现获取参数、对图层进行操作等功能,而不是需要先点击选中才能获取对象图层的id以及其它信息,这样子需要怎么实现呢?

1个回答

您好,系统字段的值和类型是不可以修改的。

生成缓存是对象id字段用您自己自定义生成的字段也可以的,但是要是整型数字型的。

smid不管是整型还是文本型,您在前端都可以取啊,比如您要拿id20的对象,从属性里找到smid为20的记录就可以。

smid的数据类型不会影响数值啊,正常普通的开发实现就可以。

希望可以帮助到您!
执笔画月  (4,961EXP)  名扬四海
10月20日, 2021

Cesium.when(this_.promise, function(layers){

                this_.layer1 = this_.scene.layers.find('T3ge@NUM16');

                this_.layer1.setQueryParameter({

                    url: 'http://localhost:8090/iserver/services/data-single-3/rest/data',

                    dataSourceName: "NUM16",                           //对应数据源名称,数据服务

                    dataSetName:"T3ge",                             //对应数据集名称,数据服务

                    isMerge: true,

                    keyWord: 'SmID'

                });

您好,数据服务我选择这样打开的

这是数据源对应的三维模型,现在遇到的问题是:我得到了某个窗户的数据信息(但是只有自定义字段,没有系统字段,在三维模型里也添加了自定义字段),我怎么能根据这些数据信息去追踪到是哪扇窗户呢?是不是必须要把SMID字段也给保存下来才可以?

您好,我们的数据源在前端的数据服务调出来的数据集是有smid等系统字段的,毕竟数据在前端也是用系统字段处理显示的,你这边桌面端能看到smid字段,前端也能正常加载,数据肯定是在的,你用smid查询筛选不到吗?
有的,我的意思是每个窗户的大小、位置、价格等自定义信息存储在了自己的数据库里,而三维模型在桌面端制作时只添加了位置字段。现在我从数据库通过位置信息获取到了某扇窗户的信息,同时我还想让该窗户在前端的三维模型上标记出来。这样子的话我是不是只能老老实实的把每扇窗户在三维模型里的SMID字段也保存在数据库里才可以实现啊?
这个就是数据查询的关联和链接问题的,

你的数据都存在dataset里可以,直接查就行,

数据部分存在dataset,部分存在其他数据库里也可以,做关联查询或者连接就行,

对于查询这个流程来说,两套数据表之间关联操作肯定是需要“连接字段”的,你的业务实现用smid做关联字段可以,用其他字段做关联id也可以,但是肯定要有,不然你怎么匹配数据。
嗯嗯,明白了。那如果都存在dataset里的话,并且不想点击查询的话,是不是也需要知道窗户的id字段值才能去进行定位到模型里窗户的位置啊
sql查询和空间查询都可以定位数据
...