Download presentation
Presentation is loading. Please wait.
Published byKristin Patterson Modified over 9 years ago
1
MapWindow 6.0: An Extensible Architecture for Cartographic Symbology 12/6/2015 1 of 34 Ted Dunsford FOSS4G Conference October, 2009
2
12/6/2015 2 of 34 Ted Dunsford Graduate Research Assistant Idaho State University with Dr. Dan Ames, in collaboration with U.S. Environmental Protection Agency, AQUA TERRA Consultants, and CUAHSI
3
Overview 12/6/2015 3 of 34 MapWindow 6.0 & Component Architecture Extensibility & Interfaces Extensible Symbology Architecture
4
MapWindow 4 ActiveX Control 12/6/2015 4 of 34 The Map Window 4 project is a windows project that started with the idea of an ActiveX control. Very easy to use. Drag and drop files to open them. Built in zooming an panning. Works with a large number of languages.
5
MapWindow 4 Application 12/6/2015 5 of 34 Strictly 2D Requires ActiveX Supports one plug-in interface that controls the entire application. Fast C++ drawing but limited symbology Slow data manipulation
6
The Curent Project: MapWindow 4.x –Our Legacy Open Source project wrapping an ActiveX control MapWindow 5.x – Our Dot Net Web Mapping Tools 6 of 34 Community Code No ActiveX control dependencies Modular Extendable Versatile
7
Components Component Based Architecture Lets you… 7 of 34
8
Drag and Drop a New GIS! 12/6/2015 8 of 34 Tool Strip Pre-Loaded Buttons Status Strip Handles Progress Messages
9
Drag and Drop a Map 12/6/2015 9 of 34
10
Drag’n Drop a Legend 12/6/2015 10 of 34
11
Wire Controls Together 12/6/2015 11 of 34 Properties Right on the Controls allow them to link together.
12
Even Plug-in Management! 12/6/2015 12 of 34
13
Interfaces 13 of 34 Color Width Height Interface Original Object
14
12/6/2015 14 of 34 Color Width Height Interface Unknown Object ??? Extensibility
15
12/6/2015 15 of 34 MapWindow Defines Interfaces Color Width Height Interface MapWindow Plug-in Plug-ins provide new code that satisfies standardized interfaces.
16
12/6/2015 16 of 34 Interfaces Define the Plug-in MapWindow Interfaces MapWindow Application MapWindow searches for classes that implement specific interfaces by using System.Reflection www.ioffer.com
17
Managers Wrangle Plugins Plugins do the work: –Loading data –Performing a process –Handle events Managers decide which provider gets used. 17 of 34 deutsch.istockphoto.com
18
Feature Symbology 12/6/2015 18 of 34 Feature Layer FeatureSet Feature Scheme Symbology Feature Category Collection Categories Symbolizer (default) Feature Category 0 Feature Category 1 [0] [1] Symbolizer
19
Point Symbolizers 12/6/2015 19 of 34 Point Category Point Symbolizer Filter Expression List Symbols Character Symbol [1] [0] Your Symbol GetColor()
20
Symbolizers Stack Symbols 12/6/2015 20 of 34
21
Built In Point Symbols 12/6/2015 21 of 34
22
Simple Point Symbols 12/6/2015 22 of 34 Simple Symbols: Color Shape Symbols Size Offset Angle Outline Symbols Outline Color Outline Width Use Outline
23
Character Point Symbols 12/6/2015 23 of 34 Character Symbols: Character FontFamilyName Color Style Symbols Size Offset Angle * True Type fonts are scalable vectors, and many are symbolic.
24
Picture Point Symbols 12/6/2015 24 of 34 Picture Symbols: Image ImageFilename Opacity Symbols Size Offset Angle Outline Symbols Outline Color Outline Width Use Outline
25
Multiple Layers in Action 12/6/2015 25 of 34
26
Point Categories 12/6/2015 26 of 34 Symbolizer Selection Symbolizer Filter Expression
27
Filter Expressions 12/6/2015 27 of 34 PointCategory smallSize = new PointCategory(Color.Blue, PointShapes.Rectangle, 4); smallSize.FilterExpression = "[Area] <.01"; smallSize.LegendText = "Small Cities"; PointCategory largeSize = new PointCategory(Color.Yellow, PointShapes.Star, 16); largeSize.FilterExpression = "[Area] >=.01"; largeSize.LegendText = "Large Cities";
28
Multiple Categories 12/6/2015 28 of 34
29
Make Your Own ISymbol 12/6/2015 29 of 34 Step 1: Implement ISymbol public class Symbol : ISymbol Step 2: Draw public void Draw(Graphics g, double scale) { Rectangle bounds = new Rectangle(-5, -5, 10, 10); g.DrawEllipse(Pens.Black, bounds); }
30
UI for Custom Symbols 12/6/2015 30 of 34 Property Grid Built in to.Net Customizable Editors Adapts to Any Object Reflection Use System.Reflection More Design Control Much more effort
31
Save and Load Custom Symbols 12/6/2015 31 of 34 using MapWindow.Serialization; [Serialize("PointShapes")] public PointShapes PointShape { get { return _pointShape; } set { _pointShape = value; } } 1.Add Reference 2.Add an Attribute Tag
32
XML File Saves Object Definition 12/6/2015 32 of 34 Object Types Cached At The Top Types are re-used
33
Upcomming Goals File-based Vector Formats OGR Feature Providers Large scale raster & image handling 33 of 34
34
Thanks! 34 of 34 Thanks to the U.S. Environmental Protection Agency AQUA TERRA Consultants CUAHSI HIS And Dr. Daniel P. Ames
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.