图示数据
本示例内容可以参考CaseStudy目录下的文件"地图.Table"的示例十三。
本节的任务是用颜色图示各省市的人均GDP,人均GDP越高,颜色越深:

示例一
1、将Map控件的"地图来源"属性设置为"None"
2、将窗口的AfterLoad事件代码设置为:
Dim
map
As
GeoMap = e.Form.Controls("Map1").GeoMap
Dim
layer
As
New
VectorLayer()
map.Layers.Add(layer)
layer.Style.Stroke.Color = Color.Gray
Dim
minValue
As
Double
= DataTables("省").Compute("Min(人均GDP)")
Dim
maxValue
As
Double
= DataTables("省").Compute("Max(人均GDP)")
Dim
minColor
As
Color = Color.FromArgb(230, 247, 255)
'
浅蓝
Dim
maxColor
As
Color = Color.FromArgb(74, 0, 114)
'深紫
For
Each
dr
As
DataRow
In
DataTables("行政区
域").Select("level=
1")
'绘制省级行政区
Dim
polygon
As
VectorPolygon = map.CreatePolygon(dr("geometry"))
layer.Items.Add(Polygon)
Dim
sr
As
DataRow = DataTables("省").Find("省代码
= '"
& dr("adcode")
&
"'")
If
sr
IsNot
Nothing
Then
Dim
value
As
Double
= sr("人均GDP")
Dim
radio
As
Double
radio = (value - minValue) / (maxValue - minValue)
Dim
red
As
Byte
= minColor.R + (CInt(maxColor.R)
-
CInt(minColor.R))
* radio
Dim
green
As
Byte
= minColor.G +
CInt((maxColor.G)
-
CInt(minColor.G))
* radio
Dim
blue
As
Byte
= minColor.B + (CInt(maxColor.B)
-
CInt(minColor.B))
* radio
polygon.Style.BackColor = Color.FromArgb(red, green, blue)
polygon.Tag = sr("省")
&
":"
& sr("人均GDP")
End
If
Next
示例二
如果希望用颜色深浅表示市级行政区域的人均GDP(参考示例十四),可以将代码改为:
Dim
map
As
GeoMap = e.Form.Controls("Map1").GeoMap
Dim
layer
As
New
VectorLayer()
map.Layers.Add(layer)
layer.Style.Stroke.Color = Color.Gray
Dim
minValue
As
Double
= DataTables("市").Compute("Min(人均GDP)")
Dim
maxValue
As
Double
= DataTables("市").Compute("Max(人均GDP)")
Dim
minColor
As
Color = Color.FromArgb(230, 247, 255)
'
浅蓝
Dim
maxColor
As
Color = Color.FromArgb(74, 0, 114)
'深紫
For
Each
dr
As
DataRow
In
DataTables("行政区域").Select("level=
2")
'绘制市级行政区
Dim
polygon
As
VectorPolygon = map.CreatePolygon(dr("geometry"))
layer.Items.Add(Polygon)
Dim
sr
As
DataRow = DataTables("市").Find("市代码
= '"
& dr("adcode")
&
"'")
If
sr
IsNot
Nothing
Then
Dim
value
As
Double
= sr("人均GDP")
Dim
radio
As
Double
radio = (value - minValue) / (maxValue - minValue)
Dim
red
As
Byte
= minColor.R + (CInt(maxColor.R)
-
CInt(minColor.R))
* radio
Dim
green
As
Byte
= minColor.G +
CInt((maxColor.G)
-
CInt(minColor.G))
* radio
Dim
blue
As
Byte
= minColor.B + (CInt(maxColor.B)
-
CInt(minColor.B))
* radio
polygon.Style.BackColor = Color.FromArgb(red, green, blue)
polygon.Tag = dr("name")
&
":"
& sr("人均GDP")
Else
polygon.Tag = dr("name")
End
If
Next
绘制的地图如下 ,出现一些白色区域是因为GDP数据不全:
