首页 / 浏览问题 / 云GIS / 问题详情
LinkItem是否支持关联mysql数据库?
106EXP 2019年12月25日
使用产品:supermap-iserver-9.1.1a-win64-zip

问题描述:想要实现矢量数据和属性数据独立开,通过关联字段关联属性信息。经测试,如果把矢量数据存储到数据库型数据源,当数据量较大时,出图效果很差,甚至无法显示图层。所以考虑,矢量数据使用文件型数据源,而属性表存储在mysql数据库中,这就涉及到SuperMap.REST.LinkItem,看了博客文章是16年的,说只支持SQL Server和Oracle,想知道9d版本是否支持关联mysql数据库,如果支持是否有示例提供参考,谢谢。如果不支,是否有别的方式实现需求,望不吝赐教!

1个回答

您好,如果是mysql的话应该可以考虑用joinitem的方式
5,668EXP 2019年12月25日
我有试过joinitem,但如果使用joinitem的话,矢量数据和属性表需要在相同数据源下,也就是矢量数据也要存储到数据库型数据源中,如果矢量数据较小倒是可以,但是如果矢量数据很大,出图都困难,甚至无法显示地图。我测试过一份20000+的面数据,地图都很难显示出来的。

做关联查询时还会报,"对象已经被释放",也不清楚这是什么问题?

这种情况的话可以考虑将joinitem改成二次查询的方式。joinitem和linkitem也是通过同一个字段去关联两个表,可以在第一次查询的时候获取第一个表中的关联字段的值保存成一个对象再通过第二次查询去查第二个表。
但是这个问题的原因是什么呢?数据量小的时候我这边测试是能够联表查询的,但是数据量如果很大,就会报400的错误,有时iserver还会重新启动。另外,我这边还需要实现服务端单值、分段专题图,也是需要设置joinitem这个连接参数的
另外,我看无论是博客文章,还是api示例中,都是基于超图地图服务,进行的联表查询。请问,有没有基于超图数据服务进行的联表查询呢,我自己尝试写了一下,没有成功。
我这边试了一下单独查询属性表,数据量大的一张查询时也是会报错,也是"对象已经被释放"错误,而且一旦报这个错误,只能把工作空间删掉再重新发布,否则超图地图服务和数据服务都无法使用的,在iserver上都无法查看地图,以及数据服务的feature也为空。
一般项目上都是用的我说的那种方法,joinitem和linkitem相对来说效率没有这种方式高,对于服务器压力一般也比较大所以可能会导致这个问题。后续如果有专题图的需求的话可以考虑客户端专题图的形式
...