Red de Respuestas Legales - Derecho empresarial - ¿Qué software es mapinfo? ¿Puedes darnos una breve introducción?

¿Qué software es mapinfo? ¿Puedes darnos una breve introducción?

Mapinfo es un sistema de información cartográfica de escritorio lanzado por la empresa estadounidense Mapinfo en 1986. Ha evolucionado desde el Mapinfo original para Dos 1.0 hasta Mapinfo Professional 6.0. Los productos Mapinfo se colocan en sistemas de información cartográfica de escritorio. En comparación con los sistemas SIG a gran escala como Arc/Info, debido a que los metadatos de Mapinfo no contienen estructuras topológicas, sus capacidades de mapeo y análisis espacial son relativamente débiles, pero pueden manejar datos de escritorio de PC populares. En términos de aplicaciones de mapas de información, Mapinfo es pequeño y exquisito, fácil de aprender y usar y tiene un precio bajo. Mapinfo proporciona su propia plataforma de desarrollo secundaria en la que los usuarios pueden desarrollar sus propias aplicaciones SIG. Hay tres métodos de desarrollo secundarios, que son el desarrollo basado en MapBasic, el desarrollo basado en la automatización OLE y el desarrollo utilizando controles MapX. Desde los primeros MapBasic hasta el actual MapX4.5, el desarrollo de sistemas SIG en Mapinfo se ha vuelto cada vez más eficiente y simple. A continuación se describe cómo utilizar MapBasic, la automatización OLE y MapX para desarrollar sistemas de aplicaciones SIG.

1. Desarrollo usando MapBasic

MapBasic es el lenguaje de desarrollo secundario propio de Mapinfo. Es un lenguaje interpretativo similar a Basic y utiliza archivos *.mbx generados por la programación de MapBasic. la plataforma de software Mapinfo. El desarrollo secundario inicial de Mapinfo se basó en MapBasic. MapBasic es fácil de aprender, pero tiene muchas limitaciones al usarlo. No puede implementar funciones personalizadas más complejas y también es problemático usarlo para crear una interfaz de usuario. Desde la perspectiva actual, MapBasic es más adecuado para ampliar las funciones de Mapinfo. .

2. Utilice el desarrollo automatizado OLE

1. Establezca objetos de automatización Mapinfo

El desarrollo basado en la automatización OLE significa que los programadores utilizan herramientas de programación estandarizadas como VC, VB. , Delphi, PB, etc. establecen controladores de automatización y luego operan Mapinfo enviando comandos macro similares al lenguaje MapBasic. Básicamente, Mapinfo se utiliza como un servidor fuera de proceso, que genera objetos de automatización OLE en segundo plano para que el controlador llame a sus propiedades y métodos.

El primer paso en el desarrollo de la automatización OLE es crear un objeto de automatización Mapinfo. Tomando Delphi como ejemplo (este será el caso más adelante), puede establecer una variable global de tipo Variante para representar la automatización OLE. objeto Supongamos que la variable se llama olemapinfo, entonces hay:

oleMapinfo := CreateOleObject('Mapinfo.Application')

Una vez establecido el objeto de automatización OLE, es decir, Cuando Mapinfo en segundo plano se inicia con éxito, puede usar el método Do del objeto para enviar comandos a Mapinfo, como:

oleMapinfo.Do('Establecer documento principal siguiente' + WinHand + 'Estilo 1')

Este comando convierte la ventana Mapinfo en una subventana de aplicación, WinHand es el identificador de la ventana del mapa, el estilo 1 es el tipo de ventana sin bordes. También puede utilizar el método Eval del objeto de automatización para devolver el valor de la expresión MapBasic. Por ejemplo, la siguiente declaración devuelve el número de tablas abiertas actualmente:

TablesNum:=olemapinfo.eval('NumTables. ()')

También puede llamar directamente al menú Mapinfo o a los comandos de los botones para operar la ventana del mapa, como ampliar la visualización del mapa:

oleMapinfo.RunMenuCommand(1705)

2. Establecer la automatización del cliente El objeto activa CallBack

La dificultad del desarrollo automatizado basado en OLE radica en el llamado CallBack La respuesta del servidor Mapinfo a la ventana del mapa del programa del cliente. CallBack. Si mueve el objetivo del mapa en la ventana del mapa, Mapinfo puede devolver información para indicarle la posición de las coordenadas actuales. Esta es la función CallBack. Si desea personalizar sus propias herramientas de operación de mapas o comandos de menú, debe confiar en CallBack.

Pero si desea capturar información de CallBack, su programa cliente debe tener la capacidad de recibir información de CallBack. Para hacer esto, necesita definir su propio objeto de automatización OLE en el programa cliente, como por ejemplo:

/. /Definición de interfaz

IMyCallback = interfaz(IDispatch)

['{2F4E1FA1-6BC7-11D4-9632-913682D1E638}']

función WindowContentsChanged(var WindowID : Integer):SCODE;safecall;

función SetStatusText(var StatusText: WideString): SCODE;safecall

//Definir implementación de interfaz

TMyCallback = clase; (TAutoObject, IMyCallback)

función SetStatusText(var StatusText: WideString): SCODE; llamada segura

La función WindowContentsChanged se utiliza para devolver Cambiar el número de ID de la ventana, es decir, cuando la ventana del mapa cambia (como acercar o alejar), deja que Mapinfo devuelva el número de ID de la ventana del mapa al programa cliente; La función SetStatusText devuelve la información de cambio de la barra de estado de Mapinfo. Los programadores no pueden definir estas funciones a voluntad, porque la devolución de llamada del servidor Mapinfo se activará solo en tres situaciones: (1) la ventana del mapa cambia y la función de activación es WindowContentsChanged (2) la información de la barra de estado de Mapinfo cambia y la función de activación; es SetStatusText. (3) El usuario selecciona una herramienta personalizada o un comando de menú para operar en la ventana del mapa, como una herramienta de dibujo de líneas personalizada por el usuario. Cuando el usuario dibuja una línea en la ventana del mapa, se activa la devolución de llamada de Mapinfo. la posición coordenada de la línea.

Después de establecer el objeto de automatización del cliente, llame al método SetCallback del objeto de automatización MapInfo para indicarle a Mapinfo el objeto de automatización definido por el cliente. Tan pronto como se ejecute el programa, el objeto de automatización del cliente se registrará automáticamente. registro, y luego podrá recibir información de devolución de llamada, como:

My:=MyCallBack.Create

oleMapInfo.SetCallBack(My)

Creo que sí Será útil dar una analogía aquí para comprender el mecanismo anterior, la interacción entre el programa cliente y Mapinfo es como la comunicación entre un director de escena y un titiritero. La ventana del mapa o la subventana de Mapinfo en el programa cliente es solo una. marioneta, y Mapinfo en segundo plano es el verdadero actor titiritero, por lo que el programa cliente debe establecer un mecanismo de contacto directo e inverso con Mapinfo en segundo plano para poder manipular los objetos gráficos en la ventana del mapa.

3. Desarrollo con MapX

1. Domina el uso de MapX

MapX es el último producto de control ActiveX lanzado por Mapinfo y ahora se ha desarrollado para MapaX4.5. Dado que MapX es un control estándar basado en el sistema operativo Windows, puede admitir herramientas de programación estandarizadas como VC, VB, Delphi y PB. Al usarlo, solo necesita cargar el control en el entorno de desarrollo. , Se agregará un botón de control Map a la barra de herramientas ActiveX del entorno de desarrollo, arrástrelo y suéltelo en el formulario para crear un objeto de mapa ActiveX tipo TMap Map configurando o accediendo a las propiedades del objeto Map, llamando a los métodos y eventos de. El objeto Mapa, el mapa se puede integrar rápidamente. La funcionalidad operativa está integrada en su aplicación.

MapX consta de una serie de objetos y colecciones. El mapa es el objeto más básico. Cada mapa consta de capas, conjuntos de datos y anotaciones. Se definen tres objetos y colecciones de objetos. se usa para operar capas de mapas, el conjunto de datos se usa para acceder a datos de atributos de objetos espaciales y la anotación se usa para agregar texto, símbolos y otras anotaciones en el mapa. Después de aprender las características de los tres objetos principales, podemos dominar lo anterior. siga las pistas para comprender las características de los objetos del siguiente nivel. Por ejemplo, cada capa está definida por objetos de característica (punto, línea, superficie, objeto de gráficos de texto) y colecciones de objetos (características), y cada conjunto de datos está definido por campo. Definición de objeto (campo de datos de atributo) y colección de objetos (campos)..., para que pueda aprender MapX rápidamente.

2. Definir el sistema de coordenadas del mapa

En el desarrollo de MapX, se debe prestar especial atención a la cuestión del sistema de coordenadas del mapa. El sistema de coordenadas del mapa MapX se divide en. un sistema de coordenadas de visualización de mapa y un sistema de coordenadas de cálculo interno son independientes entre sí. Es muy importante configurar estos dos sistemas de coordenadas de acuerdo con las necesidades de la aplicación en el desarrollo de aplicaciones SIG, porque el sistema de coordenadas afecta el procesamiento de coordenadas interno del software. por un lado, y la visualización del aspecto del mapa, por otro. El sistema de coordenadas y la proyección del objeto Mapa se definen mediante el método Set del objeto CoordSys:

Set(Type, [Datum], [Units], [OriginLongitude], [OriginLatitude],

[ StandardParallelOne], [StandardParallelTwo], [Azimut], [ScaleFactor],

[FalseEasting], [FalseNorthing], [Rango], [Límites], [AffineTransform])

donde Parámetros principales: Tipo representa el tipo de proyección. Cuando Tipo es 1, las coordenadas del mapa se expresan en longitud y latitud. Los siguientes son parámetros opcionales, donde Datum es el dato terrestre. Por ejemplo. , Las unidades son 7, lo que significa que la unidad es metros; OriginLongitude, OriginLatitude son la longitud y latitud iniciales respectivamente; StandardParallelOne y StandardParallelTwo son la primera y la segunda latitud estándar.

Al configurar el objeto CoordSys devuelto por las propiedades DisplayCoordSys y NumericCoordSys del objeto Mapa, puede configurar el sistema de coordenadas de visualización del mapa y el sistema de coordenadas de cálculo interno. Por ejemplo:

procedimiento TMain.DefineMapParam();

var

MapDatum: Variant;//Dato terrestre

comenzar

try

MapDatum := CreateOleObject('MapX.Datum.4'); //Crear un objeto de referencia

//Definir el sistema de coordenadas Beijing 54

// (Elipsoide, ShiftX, ShiftY, ShiftZ, RotateX, RotateY, RotateZ, ScaleAdjust, PrimeMeridian)

MapDatum.set(3, 24, -123, -94, - 0.02 , 0.25, 0.13, 1.1, 0);

//Defina la longitud y latitud del sistema de coordenadas Beijing 54 como el sistema de coordenadas de cálculo interno

Map1.NumericCoordSys.Set_(1, MapDatum);

//Defina el sistema de coordenadas Beijing 54 con una latitud estándar de 30 grados y la proyección de Mercator como sistema de coordenadas de visualización, la unidad es metros

Map1.DisplayCoordSys.Set_(26,MapDatum). ,7,0, 0,30);

finalmente

VarClear(MapDatum);

end; La piedra angular del sistema GIS, la configuración correcta del sistema de coordenadas es la clave para el éxito o el fracaso del sistema.

3. Manipular objetos de mapa

Simplemente puede cargar un archivo GeoSet, proporcionar contenido específico a la colección de objetos Layers y luego podrá ver la visualización del mapa en el objeto Map. Los archivos son similares al espacio de trabajo en MapX. Tiene un editor de archivos Geoset GeosetMangater.exe. Los usuarios pueden combinar y configurar capas en el editor, luego guardar y generar un archivo *.gst y transferirlo directamente al objeto Mapa. tiempo. También puede agregar o eliminar capas de mapa mediante el método Agregar o Eliminar del objeto Capas, como por ejemplo:

Map.layers.Add(FileName // Agregar una capa, FileName es el nombre de la ruta completa); del archivo

Map.Layers.Remove(3); // Elimina la tercera capa del mapa

El objeto Capas consta de un conjunto de objetos Capa a través de las Características y. Seleccione colecciones de objetos del objeto Capa, puede manipular y seleccionar objetivos gráficos en la capa, como:

Map.Layers.Item(1).AddFeature(Newobj); //Agregar el nuevo objeto Newobj); a la capa uno

4. Agrupación de datos del mapa

La agrupación de datos es el proceso de mapear datos de diferentes fuentes a la capa del mapa. El resultado de la agrupación generará un objeto de conjunto de datos. Los objetos del conjunto de datos forman la colección de conjuntos de datos, que define las propiedades del objeto del mapa. Puede utilizar conjuntos de datos para agrupar datos de diferentes fuentes en el mapa para lograr interacción gráfica y de texto, o crear mapas temáticos, como el siguiente ejemplo de agrupación y análisis temático de datos de ODBC Access:

procedimiento TMapForm. ODBC1Click(Remitente: TObject)

var

param: ODBCQueryInfo

ds: Conjunto de datos //Definir el conjunto de datos

Campos de datos: Campos; //Campo de datos de definición

begin

param.SqlQuery := 'select * from China' //Seleccione la tabla de China en la base de datos de Access

;

param.DataSource := 'MapChina'; //nombre de la fuente de datos ODBC

param.ConnectString := 'ODBC;' //O usuario = ... Pwd = ..., define Conexión ODBC

Datafields.Add('GEONAME','GEONAME', miAggregationAuto,miTypeString); //Agregar campo de datos GEONAME

Datafields.Add('POPU','POPU' , miAggregationAuto,miTypeNumeric); //Agregar campo de datos POPU

//Enlazar datos de acceso a la tabla Mapinfo China

ds := Map.Datasets.Add(miDataSetODBC, param, unassigned, unassigned, unassigned, 'CHINA ', Datafields, unassigned);

ds.Themes.Add(miThemeRanged, 'POPU', 'MyTheme'); //Agregar un mapa temático de rango

end;

5. Cree herramientas personalizadas

También puede personalizar sus propias herramientas de operación de mapas. La siguiente es una breve descripción de los pasos del método personalizando una herramienta de botón de información llamada Información. :

(1) Definir constantes de herramientas del cliente

Const CUSTOM_INFO_TOOL = 1

(2) Definir herramientas del cliente utilizando el método CreateCustomTool del objeto Map El método. es:

CreateCustomTool ( ToolNumber, Type, Cursor, [ShiftCursor], [CtrlCursor], [InfoTips])

Donde ToolNumber es el número de herramienta, que es la constante definida anteriormente; Tipo es el tipo de herramienta; Cursor es la forma del cursor, se pueden seleccionar otros parámetros.

//Defina la herramienta Información como una herramienta de activación del punto del cursor en forma de cruz

Map.CreateCustomTool(CUSTOM_INFO_TOOL, miToolTypePoint, miCrossCursor, miArrowCursor, miArrowCursor, unassigned)

(3) Escriba el controlador de la herramienta (contenido de la operación) en el evento del objeto Mapa ToolUsed

procedimiento TMain.MapToolUsed(Sender: TObject; ToolNum: Smallint; X1, Y1, X2, Y2, Distance: Double; < /p >

Shift, Ctrl: WordBool; var EnableDefault: WordBool);

comenzar

Número de herramienta de caso de

CUSTOM_INFO_TOOL : // Información de herramienta < / p>

intentar

……

fin;

(4) Definir el evento Click del botón de información

procedimiento TMain.InfoClick(Remitente: TObject);

comenzar

Map.CurrentTool:=CUSTOM_INFO_TOOL

final

IV.

El desarrollo basado en MapBasic es simple pero tiene muchas restricciones y es más adecuado para la programación de expansión de funciones Mapinfo. El desarrollo basado en la automatización OLE es más engorroso porque necesita enviar comandos de cadena de MapBasic de un lado a otro al fondo Mapinfo, y la aplicación creada se ejecuta relativamente lentamente. Sin embargo, este método de desarrollo puede producir una interfaz hermosa y amigable a voluntad. integrar operaciones geográficas y operaciones no geográficas se integran en una, y se pueden realizar casi el 100% de las funciones de Mapinfo, lo que no tiene comparación con el MapX4.5 actual. En comparación con los entornos tradicionales de desarrollo profesional de SIG, se puede decir que la aparición de sistemas SIG de componentes como MapX es un salto cualitativo. Es pequeño y flexible, fácil de desarrollar y económico. Un sistema SIG desarrollado con MapX funciona rápido porque no necesita ejecutarse en la plataforma de software Mapinfo. Sin embargo, a juzgar por el MapX4.5 actual, MapX no ha podido implementar todas las funciones de Mapinfo (se dice que más del 95%). Durante el uso, se descubrió que su capacidad para generar o editar mapas y capacidades de análisis geográfico es deficiente. insuficiente y tiene muchos errores. Con el lanzamiento de nuevas versiones en el futuro, MapX se volverá cada vez más estable y perfecto.