首页 / 浏览问题 / 桌面GIS / 问题详情
如何在sql中一边关联其他表的项目一边查询线面数据集的每个顶点
247EXP 2022年08月05日
如题。

使用iDesktop创建了一个工作空间,如何往sqlserver中添加了一个线/面的数据

之后想要让这个线/面数据和sqlserver内的其他普通表关联查询,最后导出一个geojson文件。

但iDesktop中似乎无法一边关联iDesktop中没有打开的sqlserver的表,一边导出数据

请问,如果要使用C#在sqlserver中一边关联其他表,一边查询并导出数据的话,线/面数据的geometry部分应该如何查询

使用iDesktop导出线数据的geojson时每一个feature中的geometry格式如下:

"geometry":{
        "coordinates":[[15489506.86007970,4246254.152293789],[15489506.86007970,4119631.686694536],[15535980.57327710,4118414.226212632],[15535980.57327710,4243818.982030630]],
        "type":"LineString"
    },

1个回答

您好,没有理解您前面说的各种管理具体指的是什么形式的数据,想要做什么操作呢。

.net组件做开发的话,使用SQLServer型数据源的话,可以把这个SQLServer数据源保存到工作空间中,打开工作空间来实现打开SQLServer数据源,也可以直接单独打开这个SQLServer型数据源,不是必须要在数据源中的。

组件中如果你需要把数据集中的几何对象导出成geojson格式,可以使用ExportSettingGeoJson类,如果您需要对SQLServer数据源中数据集查询,无论是点、线、面数据集或者属性表数据集进行sql查询,都可以使用DatasetVector.Query()来实现的。

如果您使用的不是SQLServer型数据源,只是单纯的SQLServer数据库,是和iDesktop和iobject组件没有关系的,这个对原生数据库的业务就需要您自行实现了。

希望可以帮助到您。
于丁
1
9,343EXP 2022年08月05日
您好。在工作空间里打开SQLServer型数据源后,请问能否导入对应SQLServer中的普通表

目前是在使用iObjects.Net的ExportSettingGeoJson类导出的geojson,但这个方法我不知道应该如何关联其他表的属性进行筛选、

比如说一个线数据里面有geometry和ID,然后SQLServer中的一个属性表里对照着线的ID保存了各自的属性。

然后导出的geojson想要根据属性进行筛选,然后导出

这种场合我现在的解决办法是创建了一个合并了属性的全新的线数据集,但保存的数据量变成了两倍,客户那边很难接受。

所以想找一种不创建新表,然后关联原本的表导出后geojson的方法

如果ExportSettingGeoJson可以实现这个功能的话,麻烦您告知一下关联外部表的方法
超图的数据集本身的关联表能力只能做数据源内不同数据集属性表的管理,不能对外部文件甚至是原生数据库里的表关联的哈。

iDesktop和iObject都没有直接操作原生数据库的能力,数据操作能力只能是数据源内的数据才可以。

要用超图这边的api进行数据操作,绝大部分都是需要是在数据源里的数据,或者gis专用的文体型数据(比如影像tifi文件、osgb缓存这些都是可以不入数据源直接操作的),像是导出、查询、编辑这些都是在数据源里基于超图的sdx数据引擎下实现这些操作能力的。

所以如果你要直接操作数据库,其实就是得用数据库c#自己的接口或者三方的连接池来操作,其实iobject组件这边没啥关系。

想对原生数据库直接操作,你得找类似这种的三方或者原生的数据库操作池库来实现手工实现。
https://blog.csdn.net/Mwyldnje2003/article/details/123036984

...