mapxtreme2004 培训 james.liu. m a p x t r e m e 2 0 0 4 内容 mapxtreme2004 概览 ...
TRANSCRIPT
MapXtreme2004 培训
James.Liu
M a
p X
t r
e m
e 2
0 0
4
内容
MapXtreme2004 概览地图及图层管理数据管理数据查询几何对象专题图
M a
p X
t r
e m
e 2
0 0
4
专题图
目标- 专题图命名空间- 专题图类型- 如何创建专题图- 图例
M a
p X
t r
e m
e 2
0 0
4
专题地图
范围专题独立值专题图饼图直方图等级符号图点密度图范围标注专题图独立值标注专题图
M a
p X
t r
e m
e 2
0 0
4
等级符号图
M a
p X
t r
e m
e 2
0 0
4
饼图
M a
p X
t r
e m
e 2
0 0
4
直方图
M a
p X
t r
e m
e 2
0 0
4
范围图
M a
p X
t r
e m
e 2
0 0
4
范围标注专题图
M a
p X
t r
e m
e 2
0 0
4
独立值专题图
M a
p X
t r
e m
e 2
0 0
4
独立值标注专题图
M a
p X
t r
e m
e 2
0 0
4
点密度图
M a
p X
t r
e m
e 2
0 0
4
专题
有两种类型的主题- 修饰符(样式覆盖)主题 – Modifier
Theme
- 对象主题 – Object Theme
M a
p X
t r
e m
e 2
0 0
4
修饰符专题和点密度专题对象模型
IndividualValueTheme
RangedTheme
CompositeStyle
RangedThemeBin IndividualValueBin
FeatureStyleModifier
«interface»IModifierTheme
1
1
1
*
«interface»ITheme
«interface»ModifierThemeBin
DotDensityTheme
IVisibilityConstraint
M a
p X
t r
e m
e 2
0 0
4
对象主题的对象模型
ObjectTheme
BarThemePieTheme
GraduatedSymbolTheme
MultiVariableThemeCategory
1
*
«interface»ITheme
MultiVariableTheme
M a
p X
t r
e m
e 2
0 0
4
范围专题图
FeatureLayer featureLayer = mapControl1.Map.Layers["World"] as FeatureLayer;
MapInfo.Mapping.Thematics.RangedTheme rangedTheme =
new MapInfo.Mapping.Thematics.RangedTheme(featureLayer, "TrainingRev", "TrainingRevenue", 5,MapInfo.Mapping.Thematics.DistributionMethod.EqualCountPerRange);
featureLayer.Modifiers.Append(rangedTheme);
M a
p X
t r
e m
e 2
0 0
4
独立值专题图
FeatureLayer featureLayer = mapControl1.Map.Layers["Office"] as FeatureLayer;
IndividualValueTheme indValueTheme = new IndividualValueTheme(featureLayer, "Region", "OfficeRegion");
featureLayer.Modifiers.Append(indValueTheme);
M a
p X
t r
e m
e 2
0 0
4
等级符号专题
FeatureLayer featureLayer = mapControl1.Map.Layers["WorldCap"] as FeatureLayer;
GraduatedSymbolTheme gradSymbolTheme = new GraduatedSymbolTheme(featureLayer.Table, "cap_pop");
gradSymbolTheme.DataValueAtSize = 1000000;
ObjectThemeLayer objThemeLayer = new ObjectThemeLayer("CapitalPopulation", null, gradSymbolTheme);
mapControl1.Map.Layers.Add(objThemeLayer);
M a
p X
t r
e m
e 2
0 0
4
饼专题图
using MapInfo.Mapping;
using MapInfo.Mapping.Thematics;
map.Load(new MapTableLoader("world.tab"));
FeatureLayer lyr = map.Layers["world"] as FeatureLayer;
PieTheme pieTheme = new PieTheme(map, lyr.Table, "Pop_Native", "Pop_Asian","Pop_Other");
//创建新图层ObjectThemeLayer thmLayer = new
ObjectThemeLayer("Ethnic Diversity", null, pieTheme);
M a
p X
t r
e m
e 2
0 0
4
饼专题图(续)
map.Layers.Add(thmLayer);
// 修改专题图并重建,也可以在专题创建前设定pieTheme.DataValueAtSize /= 2;
pieTheme.GraduateSizeBy=GraduateSizeBy.Constant;
thmLayer.RebuildTheme();
M a
p X
t r
e m
e 2
0 0
4
直方图专题
using MapInfo.Mapping;
using MapInfo.Mapping.Thematics;
map.Load(new MapTableLoader("world.tab"));
FeatureLayer lyr = map.Layers["world"] as FeatureLayer;
BarTheme barTheme = new BarTheme(map, lyr.Table, "Pop_Native","Pop_Male","Pop_Female");
ObjectThemeLayer thmLayer = new ObjectThemeLayer("Pop Male / Female", null,barTheme);
map.Layers.Add(barTheme);
barTheme.Stacked = true;
barTheme.GraduateSizeBy = GraduateSizeBy.Constant;
thmLayer.RebuildTheme();
M a
p X
t r
e m
e 2
0 0
4
范围标注地图
LabelLayer ll = map1.Layers.item(5);
LabelSource labelSource = ll.sources(0);
// 基于标注图层的 labelsource 创建RangedLabelTheme rangedLabelTheme = new
RangedLabelTheme(labelSource.Table, columnName, themeAlias, 5,DistributionMethod.EqualCountPerRange);
// 将标注样式修改增加到标注图层
LabelModifier labelModifier = rangedLabelTheme as LabelModifier;
labelSource.Modifiers.Insert(0, labelModifier);
M a
p X
t r
e m
e 2
0 0
4
独立值标注专题图
// 创建新的独立值标注专题 IndividualValueLabelTheme theme = newIndividualValueLabelTheme(labelSource.Table, columnName,themeAlias);
// 为标注增加标注修改样式LabelModifier labelModifier = theme as LabelModifier;
labelSource.Modifiers.Insert(0, labelModifier);
M a
p X
t r
e m
e 2
0 0
4
点密度专题图
using MapInfo.Mapping;
using MapInfo.Mapping.Thematics;
// 加载表map.Load(new MapTableLoader("World.tab"));
// 在图层上加入样式修改作为点密度专题图DotDensityTheme thm = new DotDensityTheme(lyr,
"Pop_1994", "World Pop", System.Drawing.Color.Red, DotDensitySize.Large);
FeatureLayer lyr = map.Layers["World"] as FeatureLayer;
lyr.Modifiers.Append(thm);
M a
p X
t r
e m
e 2
0 0
4
图例对象模型
AllOthersLegendFrameRow Class
CartographicLegendFrame Class
CartographicLegendFrameRow Class
CustomLegendFrameRow Class
ILegendRow InterfaceLegend Class
LegendFormat Class
LegendFrame Class
LegendFrameRows Class
LegendFrames Class
ThemeLegendFrame ClassThemeLegendFrameRow Class
LegendFactory Class LegendFrameFactory Class
IAdornment
ISerializable
1 1
ISerializable
1
*
ISerializable
ICloneable
ISerializable
1*
ISerializable
1*
1
1
Mapping.Thematics.ITheme
ILegendRow
ILegendRow
ILegendRow
1
1
1
*
1
1
CustomLegendFrame
M a
p X
t r
e m
e 2
0 0
4
示例 – 创建专题图例
using MapInfo.Data;
using MapInfo.Mapping;
using Mapinfo.Mapping.Thematics;
Map map = mapControl1.Map;
Table table =
MapInfo.Engine.Session.Current.Catalog.OpenTable("world.tab");
FeatureLayer layer = new FeatureLayer(table);
map.Layers.Add(layer);
BarTheme theme = new
BarTheme(map,layer.Table,"Pop_0_14","Pop_15_64","Pop_65Plus");
ObjectThemeLayer themeLayer = new ObjectThemeLayer
("World Pop", null, theme);
map.Layers.Add(themeLayer);
M a
p X
t r
e m
e 2
0 0
4
示例 – 创建专题图例(续)// 创建图例legend = map.Legends.CreateLegend(new Size(5, 5));
legend.Border = true;
ThemeLegendFrame frame = LegendFrameFactory.CreateThemeLegendFrame("Area",
"Area", theme);
legend.Frames.Append(frame);
frame.Title = "Area (sq. mi.)";
map.Adornments.Append(legend);
// 设置起始坐标System.Drawing.Point pt = new System.Drawing.Point(0,
0);
pt.X = mapControl1.Size.Width - legend.Size.Width;
pt.Y = mapControl1.Size.Height - legend.Size.Height;
legend.Location = pt;}
M a
p X
t r
e m
e 2
0 0
4
示例 – 创建图形图例
using MapInfo.Mapping;
using MapInfo.Mapping.Thematics;
// 创建图例System.Drawing.Size size = new
System.Drawing.Size(400, 400);
legendFactory = session.LegendFactory;
legend = legendFactory.CreateLegend(map, size);
frameFactory = legend.LegendFrameFactory;
// 为图例家图框frame =
frameFactory.CreateCartographicLegendFrame(lyr,
"State", "State", RowTextSourceType.Expression);
legend.Frames.Append(frame);
M a
p X
t r
e m
e 2
0 0
4 问题?