MapXtreme v9.4 Developer Guide - Precisely

[Pages:791]MapXtreme

Developer Guide

Version 9.4

Information in this document is subject to change without notice and does not represent a commitment on the part of the vendor or its representatives. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, without the written permission of Precisely, 2 Blue Hill Plaza, #1563, Pearl River, NY 10965. ? 2004, 2020 Precisely. All rights reserved. Contact and support information is located at: . This product contains SpatiaLite v 3.1.0, which is licensed under GNU Lesser General Public License, Version 2.1, February 1999. The license can be downloaded from: . The source code for this software is available from http:// gaia-gis.it/gaia-sins/win-binx86-test/spatialite-3.1.0b-test-win-x86.zip and . This product contains Feature Data Objects v 3.6.0, which is licensed under GNU Lesser General Public License, Version 2.1, February 1999. The license can be downloaded from: . The source code for this software is available from http:// fdo.content/fdo-360-downloads. This product contains HelpLibraryManagerLauncher.exe v 1.0.0.1, which is licensed under Microsoft Public License. The license can be downloaded from: . The source code for this software is available from . November 2020

Table of Contents

Table of Contents

Table of Contents 3

1 - Introduction to MapXtreme

13

Overview of MapXtreme

14

Key Features

15

Migrating to MapXtreme

17

Learning to Use MapXtreme

19

Support Resources

19

2 - Getting Started

21

Installation Requirements

22

Minimum System Requirements

23

Types of Installations

24

Development (SDK) Installations

24

Deployment (Runtime) Installations

24

Side-By-Side Installations and Use

24

Before You Install

25

Administrator Privileges

25

Install .NET Framework and Visual Studio First

25

IIS 7/8.5/10 Support

25

Default Install Directories for MapXtreme 27

Additional Installation Features

27

Installing MapXtreme in Your Environment 29

Upgrading MapXtreme

32

Migrating Web Sites to 64-bit Web Applications

33

Updating Existing Web Sites

33

Updating Existing Desktop Applications

34

Creating Applications in Visual Studio

35

Map Applications

36

Web Applications

38

MapXtreme Controls

40

Building Web Applications Without a

Template

40

Deploying Your Application

43

Deploying With the Runtime Installer

43

Deploying With Your Own Installer

44

Deploying a Web Application

49

Deploying Applications that Access Data 49

MapXtreme Web Applications Behind Proxy

Servers

49

Permissions to Temp Directory for Deployed

Web Applications

49

Application Data Files

49

Deployment Installation Troubleshooting 50

3 - Mapping Concepts

51

Mapping and MapXtreme

52

Maps

52

Tables

53

Layers

53

Features

54

Labels and Legends

54

Themes

55

Tools

56

Workspaces

56

Coordinate Systems and Projections

56

Geocoding with MapXtreme

57

Routing with MapXtreme

58

4 - Understanding the MapXtreme

Architecture

59

MapXtreme Architecture

60

Object Model Overview

61

MapInfo.Data Namespace

61

MapInfo.Data.Find Namespace

62

MapInfo.Engine Namespace

62

MapInfo.Geometry Namespace

62

MapInfo.Mapping Namespace

62

MapInfo.Mapping.Legends Namespace

62

MapInfo.Mapping.Thematics Namespace 63

MapInfo.Persistence Namespace

63

MapInfo.Raster Namespace

63

MapInfo.Styles Namespace

63

MapInfo.WebControls Namespace

63

MapInfo.Windows Namespace

63

MapInfo.Tools Namespace

64

MapInfo.Geocoding Namespace

64

MapInfo.Routing Namespace

64

Application Architectures

64

Web Application Architecture

65

Desktop Application Architecture

67

5 - Web Applications, Controls, and

MapXtreme 9.4

3

Developer Guide

MapXtreme 9.4 Developer Guide

Tools

69

Web Application Request/Response Lifecycle

70

Components of a MapXtreme Web Application

70

MapXtreme Session

70

Background Map

71

MapControl

71

Map Tools

73

State Management and Pooling Capabilities 73

MapXtreme Web Controls and Tools

74

Description of Web Controls and Tools

76

Web Control Architecture

78

Map Tools Architecture

79

How a Map Tool Works

81

Using the MapXtreme Web Controls

82

Managing Your Web Controls

83

Event Handling

83

Error Management

84

State Management

84

Creating a Custom Tool

84

Using and Distributing Custom Web Controls

87

Creating a Web Assembly

88

Adding an InfoTool to a Web Application 89

AJAX and MapXtreme Web

Applications

90

Adding AJAX Controls to a MapXtreme

Web Application

90

MapXtreme Tile Handler

92

Using the MapXtreme Tile Handler

93

Caching

95

HTML/XHTML Validation Issues

97

Migrating Post-back Web Controls to

JavaScript Web Controls

98

Loading Data

98

Replacing Controls

98

State and Event Management

99

Specialized Topics for Web Controls

99

Using Web Controls in Frames

99

Using the MapControl in Table Cells

100

Web Control Localization

100

6 - Understanding State Management 103

Overview

104

Terminology

104

What is State Management?

106

What State Management Options are Available?

106

Questions to Ask Before Writing Your Application

107

InProc Development Model

109

Pros and Cons of the InProc Development Model

110

InProc Management: A Walk-Through

110

Configuring an Application to Use the InProc

Development Model

111

Using the MapXtreme Template with the InProc

Development Model

112

State Management For Pooled Objects 113

What is Pooling?

113

Pros and Cons of Pooling

114

Saving State for Pooled Applications

114

Manual State Management: A Walk-Through

116

Configuring a Pooled Application to Use Manual

State Management

117

A Detailed Look at Manual State Management

119

Overview of the Thematics Sample

119

Application Settings

120

Implementing a StateManager

121

Serializing MapXtreme Objects in the Proper

Order

123

Automatically Deserializing MapXtreme Objects

124

Handling Initial Requests

124

Handling Subsequent Requests

125

A Closer Look at the MapXtreme Session 126

Configuring Microsoft COM+ Object Pooling 126

7 - Desktop Applications, Controls,

Dialogs, and Tools

129

Planning a Desktop Application

130

Best Practices for Desktop Applications 130

MapXtreme and COM

131

Sample Applications and Project Templates 131

MapInfo.Windows.Controls Namespace 132

Key Controls to Use in Desktop Applications

133

MapControl

134

MapToolStripButtons

135

The MapToolBar

137

Layer Control

139

MapInfo.Windows.Dialogs Namespace 141

MapXtreme 9.4

4

Developer Guide

CreateThemeWizard

142

Customizing Controls and Dialog Boxes 147

Overview of the MapInfo.Tools Namespace

147

MapXtreme Desktop Tools API

149

View Tools

150

Select Tools

150

Add Tools

151

Custom Tools

152

Shape Tools

152

Distance Map Tool

154

Using InfoTips

154

Customizing Tools

155

Tool Events

156

Editing a FeatureGeometry with the Select Tool

157

Reshaping a Feature

158

Adding Nodes

160

Reshaping and Adding Nodes Programmatically

160

8 - Working with Data

163

Overview of MapInfo.Data Namespace 164

Catalog and Tables

165

Tables

165

Catalog

170

Supported Table Types

172

Working with Catalog and Tables

175

Locating Open Tables

176

Closing a Table

177

Packing a Table

177

Listening to Table and Catalog Events

178

Table Metadata (TableInfo)

179

Examining TAB File Metadata

180

Creating a New Table

181

Adding Expression Columns to a Table 183

Data Sources

185

Choosing the Correct Data Source

185

Methods for Accessing Data

186

Data Readers, MemTables and Result Sets 187

Using an Data Provider

188

Data Binding

192

Making Tables Mappable

196

MapInfo Data Provider

199

MIConnection

199

MICommand

200

MIDataReader

202

MapInfo SQL

203

Features and Feature Collections

204

Table of Contents

Feature

204

Feature Collections

205

Searching for Features

205

Catalog Search Methods

206

SearchInfo and SearchInfoFactory

207

Saving Opened Table as GeoJson File

211

Analyzing Data

211

Improving Data Access Performance

214

9 - Working with Core MapXtreme

Classes

215

Session Interface

216

Session Management

216

Using Session.Dispose Method

217

ISessionEventHandlers

218

Serialization and Persistence

219

Serialization

219

Persistence

220

Opening and Saving a Workspace Containing

Named Resources

221

Opening an MWS: ResolveResource()

222

Saving an MWS: GetResourceName()

222

Registering Your Implementation with

MapXtreme

222

Setting Preferences

222

Selection Class

223

Using Selection Properties

223

Selection Highlighting and Exporting

224

SelectionChangedEvent

224

ISerializable Interface on Selection and

Selections Classes

224

Selection Code Examples

225

Selecting Features Within Another Feature 225

Checking a Table for Selections

225

Returning All Columns From a Table

226

Changing the Map View Following a Selection

226

Event Arguments

226

Exceptions

227

10 - Creating Expressions

229

Expressions Overview

230

Creating Expressions

230

Where Clause ? Boolean Expressions 231

Functions In Expressions

232

DateTIme and Time Expressions

232

Expression Examples

232

MapXtreme 9.4

5

Developer Guide

MapXtreme 9.4 Developer Guide

11 - Accessing Data from a DBMS 237

Accessing Remote Spatial Data

238

Accessing Remote Tables Through a .TAB File

238

Accessing Remote Tables Without a .TAB File

238

Mapping DBMS Data with X/Y Columns 239

Accessing Data from Oracle

239

Geometry Conversion

239

Oracle Support for Z and M Values

241

SDO_GEOMETRY Arc and Circle Translation

241

Visualization of Non-translatable Oracle Objects

242

Centroid Support

242

Oracle Spatial Reference Support (SRID) 242

OCI Connection Dialog

243

Accessing Data from MS SQL Server

243

SQL Server 2008 Support

243

DBMS Connection String Format

246

ODBC Connection String Format

246

ODBC Layers and Pooling in Web Applications

247

Oracle Spatial Connection String Format 248

Sample Connection Strings

248

Defining Mappable Tables in Server Table

Queries

248

The Geometry Column

249

The Key Column(s)

250

Accessing Attribute Data

251

Performance Issues

251

Working with the Cache

252

What Is the Cache?

252

How the Cache Works

252

The TableInfoServer Object and the

CacheSettings Property

253

Cache Storage Type:

256

The MapInfo_MapCatalog

256

Loading Spatial Data to DBMS

257

Manually Creating a MapInfo MapCatalog 257

Adding Rows to the MapInfo_MapCatalog 259

Per-Record Styles

264

Symbol, Pen, Brush Clause Syntax

264

Text Objects Limitation

265

Troubleshooting

266

12 - Adding Mapping Capability to

Your Applications

267

Introduction to the MapInfo.Mapping

Namespace

268

Base Mapping Classes

268

MapExport

268

Map

269

MapFactory

270

MapLoader

270

MapViewList, MapView

270

MapControl

271

Layers

271

FeatureLayer

272

Layers

272

MapLayer

272

UserDrawLayer

272

ObjectThemeLayer

273

GroupLayer

273

LabelLayer

273

GraticuleLayer

273

Layer Filters

273

IVisibilityConstraint

273

Code Example: Animation Layer

273

Labels

275

LabelLayer

276

LabelSource

276

LabelModifier

276

ILabelSourceFilter

277

LabelProperties

277

Generating Labels

277

Label Priorities

278

Label Layer Selectability

279

Code Example: Creating a LabelLayer

279

Curved Labels

280

Adornments

280

Legends

280

ScaleBar Adornment

281

Title Adornment

282

Feature Style Modifiers

282

FeatureStyleModifier

283

FeatureStyleModifiers

283

FeatureOverrideStyleModifier

283

Printing Your Map

284

13 - Finding Locations

285

Functional Overview of Find

286

The Find Process

286

Matching Address Numbers

288

Matching with a Refining Boundary Table 289

MapXtreme 9.4

6

Developer Guide

Find Results

289

Overview of the Data.Find Namespace 289

Find

290

.FindAddressRange

292

FindCloseMatch

293

FindResult

294

Fine Tuning the Find Process

297

Editing the Mapinfow.abb File

297

14 - Using Themes and Legends 305

Thematics Overview

306

Mapping.Thematics Namespace

306

Modifier Themes

306

Object Themes

307

GraduatedSymbolTheme

308

When To Use a Graduated Symbol Theme 308

PieTheme

309

When To Use a Pie Theme

309

Printing a Map Containing Pie/Bar Themes 310

BarTheme

310

When To Use a Bar Theme

310

Controlling Display Size for Pie and Bar Themes

311

RangedTheme

311

When To Use a Ranged Theme

312

Types of Ranged Values

312

RangedLabelTheme

314

When To Use a RangedLabelTheme Class 314

Ranged Themes and Serialization

315

IndividualValueTheme

315

When To Use an IndividualValueTheme Class

315

Creating an IndividualValueTheme with

Custom Bitmap Symbols

316

IndividualValueLabelTheme

317

When To Use an IndividualValueLabelTheme

Class

317

IndividualValue Themes and Serialization 318

DotDensityTheme

318

When To Use a DotDensityTheme Class 318

Bivariate Thematic Maps

319

Legends Overview

320

Theme Legends

320

Cartographic Legends

321

Formatting a Legend

322

Export/Import Theme and Style

322

Table of Contents

15 - Stylizing Your Maps

323

Overview of the MapInfo.Styles Namespace

324

StyleFactory

325

Style Descriptions

325

AreaStyle

325

BitmapPointStyle

326

CompositeStyle

326

SimpleInterior

326

Font

327

FontPointStyle

327

GridStyle

327

RasterStyle

327

Hillshade

327

Inflection

328

SimpleLineStyle

328

BasePointStyle

328

BaseLineStyle

328

BaseInterior

328

StockStyles

328

TextStyle

329

SimpleVectorPointStyle

329

Pre-defined Styles and the StyleRepository

Class

329

StyleRepository Class

329

Using Styles

330

Styles and Layer Control

330

Creating a Custom Bitmap Style

330

Overriding Styles

331

FeatureOverrideStyleModifiers

331

16 - Spatial Objects and Coordinate

Systems

333

Introduction to MapInfo.Geometry Namespace

334

Geometries

334

Geometry Objects

335

FeatureGeometry Objects

336

Geometry Objects

341

Including Your FeatureGeometry in a Map 342

Checking for Points in Polygons

343

Coordinate Systems

345

Creating a CoordSys Object

345

Changing the Coordinate System of a Geometry

Object

346

Determining the Coordinate System of a Map in

MapControl

347

Adding Coordinate Systems to MapXtreme 347

MapXtreme 9.4

7

Developer Guide

MapXtreme 9.4 Developer Guide

17 - Working with Rasters and Grids 351

Overview of the MapInfo.Raster Namespace

352

Raster Images

352

Raster Classes

354

Raster Images and Coordinate Systems 354

Raster Reprojection

354

Raster Image Limitations

355

Code Sample: Adding a Raster Image to a Map

355

Raster Handlers

356

Raster Handler Properties

358

MRR - Multi Resolution Raster Format 358

Benefits of MRR Technology

359

Data Storage in MRR

360

MRR support in MapXtreme

362

Configuring Custom Raster Handlers

364

Grid Images

365

Grid Classes

366

Code Sample: Adding a Grid Image to a Map

366

Code Sample: Retrieving Data from a Grid Map

367

Grid Creation

368

Grid Interpolators

369

Inverse Distance Weighted (IDW) Interpolator

369

Triangulated Irregular Network (TIN) Interpolator

369

IInterpolator Interface

370

Grid Style

370

Grid Images and Inflections

371

Inflection Methods

371

Calculating Inflection Values and Colors for a

Grid Layer

372

Relief Shading

373

Grid Style Dialog

373

GridInfoForm Sample Application

376

18 - Working with Maps from Tile

Servers

377

Tile Server Images

378

Tile Caching

378

Map Behavior with a Tile Server Layer 379

Using Tile Server Images

379

QuadKey

379

LevelRowColumn

380

WMTS (Web Map Tile Service)

380

Custom Resolution Tile Service

381

Consuming Tile Layers via APIs (without .tab/

.xml file)

382

TileServerType Enumeration

386

Sample Code Snippets

386

Opening Tile Server via APIs

386

Opening WMTS via APIs

387

Opening Custom Tile Server via APIs

388

Authentication to Tile Server

389

Tile Server Settings

389

License Key for Bing Maps

389

Via the Web or Desktop Configuration File 390

Via MapInfo.Engine.TileServerSettings Class

390

Sample Code for TileServerSettings class 390

Using TableInfoTileServer Class

391

Tile Server Sample Application

391

19 - Working with GeoPackage 393

Overview

394

Opening a GeoPackage file

394

Opening a GeoPackage Tab file

396

Enable GeoPackage as cache for RDB (SQL/

Oracle) tables

396

Create and Save GeoPackage file

programmatically

397

20 - Geocoding

399

Overview of the MapInfo.Geocoding

Namespace

400

Main Geocoding Classes

401

GeocodeRequest

402

GeocodeResponse

402

GeocodeClientFactory

402

GeocodingConstraints

402

AddressCandidates

402

BaseGeocodeMatchCode and

GeocodeMatchCode

402

CandidateAddress

403

Understanding the Geocoding Model

403

Geocoding Trade-offs

403

A Few Words About Addresses

404

What are Custom User Dictionaries?

405

What is World Geocoding?

405

Geocoding a Location

405

MapXtreme 9.4

8

Developer Guide

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download