SuperMapObjects开发之在程序中设置符号的大小

        在GIS中,符号的显示一般有两种方式:固定方式和自动缩放.固定方式顾名思义就是指符号的大小在比例尺的缩放过程中保持不变;自动缩放是指符号的大小在比例尺的缩放过程中依某中比例也进行改变.这是GIS软件提供的两种通用的方式.

        在实际的系统开发过程中,用户的需求往往是在某比例尺范围内(如1/1000-1/2000),符号的大小保持不变,而不在此范围内的话符号的大小就会发生改变.可以在程序中是实现此功能.

对象模型: soLayers, soLayer, soStyle
private void SuperMapShow_Scale()
    {
        int iscale = Convert.ToInt32(1 / SuperMapShow.ViewScale);
        soLayers objlayers = SuperMapShow.Layers;
        soLayer objlayer = objlayers["变电_变电所@CARS_GIS"]; //特定的数据集
        soStyle objstyleold = objlayer.Style;
        soStyle objstyle = new soStyle();          
        int symbols = 80 * iscale / 20000; //设置符号大小(数学模型的确定?)
           
        //使符号大小依据某种比例关系变化
        if (iscale > 24230 && objlayer != null && objstyleold.SymbolSize != symbols)
        {
            objlayer.Style.SymbolSize = symbols;
            if (iSmallScale == 0)
            {
               SuperMapShow.Refresh();
               iSmallScale++; //全局变量,控制Refresh的执行次数
            }
            }
        //固定符号的大小
       if (iscale < 24230 && objlayer != null && objstyleold.SymbolSize != 100)
        {
            objlayer.Style.SymbolSize = 100; //设置符号的大小
            if (iLargeScale == 0)
            {
               SuperMapShow.Refresh();
                    iLargeScale++; //全局变量,控制Refresh的执行次数
             }
     } 
         iscale = 0;
         objlayers = null;
         objlayer = null;
     objstyle = null;
}
 
    以上的代码只是实现了在当比例尺小于1/24230的时候,符号的大小依某种比例随比例尺的变化而变化,而比例尺大于1/24230的时候,符号的大小保持不便.程序员在实际的开发过程中应该根据用户的具体需求来编写的相应的代码.
    
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值