在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的时候,符号的大小保持不便.程序员在实际的开发过程中应该根据用户的具体需求来编写的相应的代码.