首页 / 浏览问题 / 组件GIS / 问题详情
当前上下文中不存在名称“datasource”
20EXP 2019年07月05日
using SuperMap.Data;
using SuperMap.Mapping;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace zudonghua0705
{
    public partial class Form1 : Form
    {

        int xq = 1;
        Dataset dataset0 = datasource.Datasets["yanmo"];
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
         
        }

        private void Timer1_Tick(object sender, EventArgs e)
        {
            if (xq < Convert.ToInt32(textBox1.Text))
            {

                //将数据集添加到此图层集合作为一个普通图层显示
                Layer layer = m_mapControl.Map.Layers.Add(dataset, true);
                m_mapControl.Map.Refresh();
                //map.Open(workspace.Maps[xq]);
                xq = xq + 1;
            }
            else
            {
                timer1.Stop();
                timer1.Tick -= Timer1_Tick;
            }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
          
           
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Interval = Convert.ToInt32(textBox2.Text);
            timer1.Start();
            timer1.Tick += Timer1_Tick;

        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Stop();
            timer1.Tick -= Timer1_Tick;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            
        }
    }
}

1个回答

您好,你是指datasource.Datasets这一块吗,这个是需要实例化一个datasource,然后用datasource.Datasets
2,432EXP 2019年07月05日
实例化datasource的代码是?
您好,详情可以参考帮助文档 具体步骤是先实例化一个Datasource,在实例化一个DatasourceconnectionInfo去连接你的数据源,再Datasource.open(DatasourceconnectionInfo)
Datasource datasource = dataSources.get("sss"); //为什么提示上下文不存在名称datasources
您好,如果是获取数据源的话是从工作空间获取,即workspace.Datasources.get

您好我想请教个问题,

我用如下的方式打开工作空间,其中address是工作空间路径(如E:/develop/supermap-iserver-10.0.0-win64-zip/samples/data/World/World.sxwu),出现了一个问题是,

datasource.getDatasets()得到的datasets长度为0,没有数据集,datasets.getCount()的返回也是0。但是通过
http://localhost:8090/iserver/services/data-world/rest/data/datasources/World/datasets

地址访问时,可以看到是有数据集的,请问是什么原因导致的。数据源也要用open方法获取才行吗。
还有一个问题是除了REST api之外有没有其他的方法通过服务名称获取到工作空间路径。
谢谢!
m_workspace = new Workspace();
WorkspaceConnectionInfo conInfo = new WorkspaceConnectionInfo(address);
conInfo.setType(WorkspaceType.SXWU);
m_workspace.open(conInfo);
Datasources datasources = m_workspace.getDatasources();
Datasource datasource = datasources.get(datasourceName);
Datasets datasets = datasource.getDatasets();
int count = datasets.getCount();
Dataset dataset = datasets.get(datasetName);

...