Documentos de Académico
Documentos de Profesional
Documentos de Cultura
mayo de 2005
ArcIMS 9.0 Curso prctico Introduccin, personalizacin y desarrollo de aplicaciones Cliente Parte 2
BGR - PN 1999.2103.2
Pgina 1 de 83
mayo de 2005
Contenidos
Curso prctico: Introduccin, personalizacin y desarrollo de aplicaciones cliente en ArcIMS 9.0
Parte 2: XML, ArcXML y esquemas La comunicacin entre visor y servidor a travs del protocolo ArcXML Modificacin avanzada de archivos de configuracin de mapas Administracin avanzada de sitios ArcIMS Consultas de la informacin de atributos y espacial Personalizacin avanzada del visor HTML
Metas y prerrequisitos
Metas: Disear sitios Web con mapas dinmicos a partir del uso de la tecnologa ArcIMS, ArcXML y HTML Prerrequisitos: Conocimientos en HTML y JavaScript Conocimientos en ArcGIS Participacin en el curso prctico parte 1 Reglas del curso: Apagar celulares y desenchufar telfono Salir de la sala solamente durante los descansos Seguir los materiales del curso no adelantar en la materia
BGR - PN 1999.2103.2
Pgina 2 de 83
mayo de 2005
La estructura de XML: Etiquetas y atributos Comentarios Localizacin Las principales aplicaciones de XML DTD, estndares de esquemas y DOM Transformacin de XML: Presentacin en Web Procesamiento (parsing) El DTD de ArcXML: Validacin de archivos de configuracin El rol de ArcXML en ArcIMS La gua de referencia ArcXML
BGR - PN 1999.2103.2
Pgina 3 de 83
mayo de 2005
La estructura de XML
Al igual como HTML, XML es un lenguaje textual de etiquetas (Markup) A diferencia con HTML, etiquetas XML identifican datos en vez de estilos de presentacin XML se compone de etiquetas y atributos. Una etiqueta puede contener cero, uno o varios atributos: <MAP dynamic=true><LAYER id=A3 name=Municipios /></MAP> Cdigo XML puede contener etiquetas vacas: <SCREEN/> Documentos XML pueden incluir comentarios explicativas sobre el cdigo: <!-- La siguiente seccin contiene la clasificacin del modelo de elevacin --> XML es ms restrictivo que HTML en cuanto a errores de sintaxis: etiquetas abiertas no estn permitidas. Cada documento XML requiere de un prlogo en el formato: <?xml version="1.0" encoding="UTF-8"?>
XML, ArcXML y estndares 1
XML se compone de atributos y elementos, y en muchos casos una estructura XML podra disearse utilizando atributos para un elemento de informacin o sub-elementos de un elemento existente: <diapositiva><titulo>Este es un ttulo</titulo></diapositiva> <diapositiva titulo="Este es un ttulo">...</diapositiva> Sin embargo, existen ciertas reglas que deciden sobre cundo utilizar un elemento y cundo utilizar un atributo para crear una estructura XML: Si los datos contienen sub-estructuras el objeto tiene que ser modelado como elemento porque atributos solo aceptan cadenas simples de texto Si los datos contienen ms que una lnea de texto el objeto debe modelarse como elemento Si un objeto puede ocurrir ms que una vez, ste debe modelarse como elemento Si los datos cambian frecuentemente, es recomendable utilizar elementos en vez de atributos (es ms fcil editar elementos) Si los datos son cadenas de texto son pequeas y simples y cambian raramente, atributos pueden utilizarse para modelar el objeto DTD pueden restringir valores permitidos de atributos pero no de elementos
BGR - PN 1999.2103.2
Pgina 4 de 83
mayo de 2005
La importancia de XML tiene sus razones en una serie de caractersticas inherentes a las especificaciones y el modelo de objetos de documento: Texto sencillo: XML no est almacenada en formato binario o propietario sino en formato texto ASCII compatible con cualquier editor de texto estndar. Al mismo tiempo la estructura y jerarqua de XML es tan potente y escalable como un sistema de base de datos relacional o repositorio de datos. Identificacin de la informacin El modelo de objetos de documento (DOM) permite consultar y filtrar la informacin contenida en documentos XML a partir de las etiquetas definidas en el DTD. Representacin visual El contenido de documentos XML puede visualizarse en la Web a travs de hojas de estilo, tanto como convertirse en PostScript, TEX, PDF u otros formatos.
BGR - PN 1999.2103.2
Pgina 5 de 83
mayo de 2005
XML ya es base para varios estndares especializados que se han construido utilizando XML como herramienta de definicin de lenguajes: SMIL Synchronized Multimedia Integration Language - SMIL es una recomendacin del W3C que cubre audio, video y animaciones MathML Mathematical Markup Language - MathML es una recomendacin del W3C para la representacin de formulas matemticas SVG Scalable Vector Graphics - SVG es una recomendacin del W3C para la representacin de grficos de vectores en Internet DrawML Drawing Meta Language - DrawML es una recomendacin del W3C que cubre imgenes 2D para ilustraciones tcnicas
BGR - PN 1999.2103.2
Pgina 6 de 83
mayo de 2005
La transformacin de XML
Documentos XML no contienen instrucciones que definen el formato y los estilos de la presentacin en Web de su contenido. XSLT es un estndar para la transformacin de etiquetas XML y de la informacin almacenada en un documento a HTML. Se usa XSLT en combinacin con XPATH, un mecanismo que permite filtrar y seleccionar los elementos a presentar. Lenguajes de programacin en Web como por ejemplo JSP utilizan XPATH para interpretar y crear consultas a documentos XML. La interpretacin (Parsing) y consulta programtica de documentos y cdigo XML puede realizarse a travs del modelo de objetos DOM y SAX. Aplicaciones escritas en el lenguaje Java pueden utilizar libreras como JAXP (Java API for XML Processing) para interpretar cdigo XML.
Un modelo de objetos de documento (DOM) es una estructura tipo rbol en la cual cada nodo contiene una de los componentes de una estructura XML. Los nodos ms comunes son nodos de elemento (element nodes ) y nodos de texto (text nodes). Utilizando funciones del DOM (p. ej. nodeValue(), node.nodeType(), and nodeName()), los nodos pueden ser creados, borrados y sus contenidos modificados. Otras funciones permiten recorrer la jerarqua del documento e inspeccionar sub-conjuntos de elementos o sub-elementos.
BGR - PN 1999.2103.2
Pgina 7 de 83
mayo de 2005
El DTD de ArcIMS
ESRI provee con una Definicin de Tipo de Documento (DTD) de ArcXML que puede utilizarse para validar etiquetas y estructura de archivos AXL. La validacin de documentos XML se realiza en editores XML. El DTD de ArcXML puede utilizarse en una gran variedad de editores XML pero se recomienda editores que soportan codificacin UTF-8. Dos editores recomendados son XMLSpy y Xeena El DTD tiene que especificarse en el elemento DOCTYPE en la cabecera del documento ArcXML: <!DOCTYPE ARCXML SYSTEM "<arcxml.dtd"> Los editores XML pueden desplegar el contenido y la estructura de un archivo de configuracin de mapas en forma de una rejilla
XML es un sistema complejo de tratamiento de informacin. Mientras que HTML es un lenguaje, XML representa una familia de lenguajes o metalenguaje capaz de definir otros lenguajes. El cdigo HTML, por ejemplo, est basado en un DTD (Document Type Definition, definicin de tipo de documento) interno. DTD es una definicin de las normas que regulan la formacin de las etiquetas de un lenguaje de marcas determinado, en este caso el HTML. En XML no existen DTDs predefinidos, por lo que es labor del diseador especificar su propio DTD para cada tipo de documento XML. El DTD de ArcIMS es la definicin de los tipos de nodos y atributos permitidos en los elementos de ArcXML.
BGR - PN 1999.2103.2
Pgina 8 de 83
mayo de 2005
La comunicacin entre los diferentes componentes de ArcIMS se realiza a travs del protocolo ArcXML. ArcXML es un derivado de XML, y se diferencian en tanto ArcXML no describe la estructura para la presentacin de una pgina Web de mapas, sino para la estructura del siguiente contenido y funcionalidad: Configuracin de servicios de mapas: Definen el contenido y el diseo de mapas a diseminar, incluyendo las capas de informacin espacial y su simbologa. Consultas: Emplean un filtro a servicios de mapas existentes y especifican la parte del mapa y datos relacionados que van a ser procesados. Respuestas: Mandan la informacin requerida al cliente.
BGR - PN 1999.2103.2
Pgina 9 de 83
mayo de 2005
Prctica
BGR - PN 1999.2103.2
Pgina 10 de 83
mayo de 2005
Las relaciones entre los elementos principales de ArcXML CONFIG - Configuracin REQUEST - Peticin RESPONSE - Respuesta El ciclo de peticin y respuesta El funcionamiento del PostFrame Obtencin de informaciones sobre servicios ArcIMS
BGR - PN 1999.2103.2
Pgina 11 de 83
mayo de 2005
Existen 3 tipos de elementos principales en ArcXML: <Config>, <Request>, <Response>. CONFIG se utiliza para la configuracin de archivos de mapas, base para la creacin de servicios de mapas. REQUEST utiliza el cliente para comunicarse con el servidor espacial y obtener informacin en forma de mapas o datos. RESPONSE utiliza el servidor para enviar la informacin solicitada al cliente. La comunicacin entre cliente y servidor espacial se realiza a travs del servidor de aplicaciones y el conector Servlet. Al utilizar una herramienta o funcin en el Cliente, se ejecutan una serie de funciones Javascript para realizar esta comunicacin en forma de un ciclo peticin - respuesta (request-response cycle). El diagrama a continuacin muestra el ciclo complete para las herramientas de cliente Zoom In e Identify.
BGR - PN 1999.2103.2
Pgina 12 de 83
mayo de 2005
Ciclos de comunicacin
1. Esquema de ciclos de comunicacin (Zoom / Identificar)
Al utilizar una herramienta (Zoom e Indentify en este ejemplo) y hacer clic sobre el mapa principal una serie de funciones JavaScript se ejecutan y preparan la informacin a enviar al servidor con la funcin sendToServer y el modo de procesar la respuesta con processXML().
BGR - PN 1999.2103.2
Pgina 13 de 83
mayo de 2005
Ciclos de comunicacin
2. El ciclo peticin respuesta en el visor HTML
La comunicacin entre el cliente (visor) y el servidor se basa en peticiones y respuestas codificadas en ArcXML. En cada ciclo consulta-respuesta, las funciones Javascript actualizan los atributos y elementos de entrada del archivo PostFrame (jsform.htm). El contenido de PostFrame se enva al conector Servlet en forma de formulario HTML. El mismo conector recibe la respuesta del servidor espacial y la convierte en una nueva pgina PostFrame. Este mtodo de envo de un formulario es necesario porque JavaScript y HTML so son capaces de manejar un ciclo de peticin respuesta por su propia cuenta.
BGR - PN 1999.2103.2
Pgina 14 de 83
mayo de 2005
Ciclos de comunicacin
3. La peticin 1) Una funcin JavaScript crea cdigo ArcXML apropiado para la operacin seleccionado por el usuario. Se ejecuta la funcin sendToServer en MapFrame que actualiza el elemento ArcXMLRequest del formulario de la pgina PostFrame. El formulario de PostFrame se enva al servidor Web y el conector Servlet extrae las valores de los parmetros del formulario. El conector Servlet reenva la peticin al servidor de Aplicaciones el cual la manda al servidor espacial para ser procesado.
2)
3)
4)
Una funcin Javascript crea la peticin ArcXML y ejecuta la funcin sendToServer en MapFrame (mapframe.htm) para actualizar los elementos de PostFrame. El formulario PostFrame es enviado al servidor Web y el conector Servlet extrae la informacin del formulario. El conector enva la informacin al servidor de Aplicaciones y ste la manda al servidor espacial.
BGR - PN 1999.2103.2
Pgina 15 de 83
mayo de 2005
Ciclos de comunicacin
4. La respuesta 1) El servidor especial enva la respuesta con la informacin solicitada al conector Servlet a travs del servidor de Aplicaciones. El conectador crea una nueva versin del PostFrame con la informacin obtenida del servidor espacial y reemplaza la versin anterior. La funcin passXML pasa la informacin contenida en PostFrame a la funcin processXML de la pgina MapFrame. La funcin processXML finalmente ejecuta la funcin Javascript adecuada para procesar la informacin obtenida.
2)
3)
4)
BGR - PN 1999.2103.2
Pgina 16 de 83
mayo de 2005
Ciclos de comunicacin
5. La pgina PostFrame
<HTML> <HEAD> <TITLE>Default Form</TITLE> <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> function passXML() { var theResponse = // Conector reemplaza este valor; parent.MapFrame.processXML(theResponse); } </SCRIPT> </HEAD> <BODY BGCOLOR="White" onload="passXML()"> <FORM ACTION="" METHOD="POST" name="theForm"> <INPUT TYPE="Hidden" NAME="ArcXMLRequest" SIZE="40"> <INPUT TYPE="Hidden" NAME="JavaScriptFunction" VALUE="parent.MapFrame.processXML"> <INPUT TYPE="Hidden" NAME="RedirectURL" VALUE=""> <INPUT TYPE="Hidden" NAME="BgColor" VALUE="#000000"> <INPUT TYPE="Hidden" NAME="FormCharset" VALUE="UTF-8"> </FORM> </BODY> </HTML
La comunicacin entre cliente y servidor 6
Al enviar una consulta al servidor espacial, se actualizan los siguientes elementos de la pgina PostFrame: Action: ArcXMLRequest: JavaScriptFunction: BGColor: FormCharset: URL del servicio de mapas. Texto con la consulta ArcXML. Funcin que procesar la respuesta. El predefinido es parent.MapFrame.processXML. Color de fondo. El predefinido es negro. Codificacin de caracteres de ArcXML. El predefinido es UTF-8.
Las valores del formulario se actualizan y el formulario se enva al conector Servlet que extrae las peticiones ArcXML y las reenva a travs del Servidor de Aplicaciones a la parte adecuada del servidor Espacial. La respuesta del servidor espacial crea una nueva versin de la pgina PostFrame conteniendo la informacin obtenida. A continuacin, una pgina PostFrame con una respuesta incluida por el conector Servlet.
BGR - PN 1999.2103.2
Pgina 17 de 83
mayo de 2005
Ciclos de comunicacin
6. La pgina PostFrame con una Respuesta
<HTML> <HEAD> <TITLE>Default Form</TITLE> <SCRIPT TYPE=text/javascript LANGUAGE=JavaScript> function passXML() { var XMLResponse = <?xml version=1.0 encoding=UTF8?><ARCXML version=1.1> <RESPONSE><IMAGE><ENVELOPEminx=-180 miny=-126 maxx=180 maxy=126/> <OUTPUT file=c:\\\arcims\\\output\\\World_KAT27721614.gif url=http://kat/output/World_KAT27721614.gif/></IMAGE></RESPONSE></ARCXML>; parent.MapFrame.processXML(XMLResponse); } </SCRIPT> </HEAD> <BODY BGCOLOR=#000000 onload=passXML()> <FORM ACTION=METHOD=POST name=theForm> <!--- <input type=Hidden name=Form value=True> ---> </FORM> </BODY> </HTML>
BGR - PN 1999.2103.2
Pgina 18 de 83
mayo de 2005
Ciclos de comunicacin
6. Manejo del ciclo de comunicacin en el cliente El ciclo peticin - respuesta est manejado por las funciones sendToServer() y processXML() en aimsXML.js. Ambas funciones cambian y comprueban el valor de la variable okToSend despus de cada peticin y respuesta. La manera correcta de programar funciones propias es utilizando customMapTool() y useCustomFunction() en el archivo aimsCustom.js: (A) function customMapTool(e) { if (toolMode == 1001) { if (checkIfActiveLayerAvailable()) { select(e); } } } if (toolMode == 1002) { (B) function useCustomFunction(theReply) { if (XMLMode==1001) { var tempVar = toolMode; toolMode = 25; displayAttributeData(theReply); toolMode = tempVar; zoomToReturnedRecords(); } else if (XMLMode==1002) {
La comunicacin entre cliente y servidor 8
(A) La funcin encargada de mandar los comandos personalizados al servidor espacial (a travs de servidor de aplicaciones) utilizando la funcin Javascript sendToServer. (B) La funcin personalizada para recibir y procesar la respuesta del servidor espacial.
BGR - PN 1999.2103.2
Pgina 19 de 83
mayo de 2005
Prctica
1.
Revisar la funciones sendToServer(), sendMapXML() y processXML() en aimsXML.js Revisar los parmetros y las funciones de accin del formulario del PostFrame en la pgina jsForm.htm. Buscar la variable okToSend en aimsXML.js y otros archivos JavaScript Revisar las funciones customMapTool() y useCustomFunction() en aimsCustom.js, aimsClick.js y aimsXML.js. Buscar y revisar los archivos JavaScript que ajusten las variables toolMode y XMLMode.
2.
3. 4.
5.
*Nota: el documento PDF Customizing the HTML Viewer contiene una referencia de las funciones JavaScript
La comunicacin entre cliente y servidor 9
BGR - PN 1999.2103.2
Pgina 20 de 83
mayo de 2005
Tablas de atributos y bases de datos externos Consultas almacenadas Extraccin de datos Utilizacin de proyecciones: El motor de proyecciones en ArcIMS Seleccionar una proyeccin Proyecciones en los archivos de configuracin
BGR - PN 1999.2103.2
Pgina 21 de 83
mayo de 2005
BGR - PN 1999.2103.2
Pgina 22 de 83
mayo de 2005
El elemento <SPATIALQUERY> realiza consultas a los datos que componen un servicio de mapas de las siguientes maneras: Consulta o filtra los datos en base a sus atributos alfanumricos Crea una consulta o filtro espacial en base a los elementos geogrficos Crea una combinacin de consulta de atributos y espacial
Adems, <SPATIALQUERY> realiza la unin de las tablas de atributos con archivos DBF externos y la relacin con tablas ArcSDE. El archivo DBF debe encontrarse en la misma carpeta del archivo SHP. No debe utilizarse un archivo DBF de un archivo SHP utilizado en un servicio de mapas. Los atributos claves para la unin de tablas son joinexpression y jointables.
BGR - PN 1999.2103.2
Pgina 23 de 83
mayo de 2005
Consultas almacenadas
Consultas SQL pueden ser predefinidas y almacenadas para su uso en los visores de ArcIMS. Consultas almacenadas facilitan el trabajo a usuarios poco experimentados con el sintaxis de SQL. Elementos claves para crear consultas almacenadas son <STOREDQUERY>, <QUERY> y <SQVAR> <EXTENSION type="StoredQuery"> <STOREDQUERIES> <STOREDQUERY name="Poblacion"> <QUERY where="( POP_ADMIN > [%var%])" subfields="#ALL# /> <SQVAR position="0" name="[%var%]"> <FIELD name=POP_ADMIN" precision="0" type=4" size=10" /> </SQVAR> </STOREDQUERY> </STOREDQUERIES> </EXTENSION> Modificacin avanzada de archivos de configuracin
El elemento <EXTENSION> define los parmetros de consultas almacenadas y extracciones de capas. Para definir una consulta almacenada se utiliza el elemento STOREDQUERIES. Una consulta almacenada crea una consulta predefinida a ser utilizad en visores ArcIMS. El elemento <QUERY> sigue las mismas reglas en la construccin de clusulas SQL como <SPATIALQUERY>. Es recomendable comprobar la consulta con valores reales y posteriormente reemplazar el valor con la variable [%var%].
BGR - PN 1999.2103.2
Pgina 24 de 83
mayo de 2005
Para habilitar el servidor de extraccin, una extensin tipo Extract debe incluirse en el archivo de configuracin. Si una capa de la configuracin del mapa incluye una extensin tipo Extract, todas las capas pueden ser extradas y descargados. EXTRACTPARAMS es el elemento principal y debe incluirse en el elemento EXTENSION. El atributo clip especifica si los elementos deben recortarse correspondiendo a la extensin actual del mapa en el visor. Si se deshabilita clip elementos parcialmente incluidas en el visor, se extraen completamente. Elementos recortados no extraen sus atributos de la base de datos. El elemento OUTPUTFILE puede utilizarse para modificar el nombre del Shapefile generado. De forma predefinida, el nombre de Shapefile corresponde al atributo id en el elemento LAYER. Similarmente, mediante el elemento OUTPUTFIELD pueden definirse alias para los nombres de los campos a extraer. Para limitar los campos extrados a los especificados en el elemento OUTPUTFIELD, el atributo subfields debe incluirse en un elemento SPATIALQUERY o QUERY de la capa indicada.
BGR - PN 1999.2103.2
Pgina 25 de 83
mayo de 2005
Utilizacin de proyecciones
El servidor espacial de ArcIMS provee con capacidades de proyectar capas espaciales de forma dinmica (on-the-fly). Existen tres elementos ArcXML que manejan la proyeccin de datos: COORDSYS - define los Metadatos de la proyeccin FEATURECOORDSYS - sistema comn de coordenadas FILTERCOORDSYS - sistema de coordenadas en peticiones del cliente <MAP dynamic="true" > <!- - Ejemplo en un archivo de configuracin - -> <PROPERTIES> <FEATURECOORDSYS id="4326" /> <FILTERCOORDSYS id="4326" /> </PROPERTIES> <LAYER type="image" name="ETM N1610" visible="true" id="N1610" > <DATASET name="n-16-10.sid" type="image" workspace="jai_ws-18" /> <COORDSYS id="32616" /> </LAYER> Modificacin avanzada de archivos de configuracin
La proyeccin y transformacin de datos se realiza en el servidor espacial de ArcIMS. Existen tres elementos en ArcXML que se utilizan para definir proyecciones en archivos de configuracin de mapas o en consultas: COORDSYS FEATURECOORDSYS FILTERCOORDSYS
En ArcIMS, el trmino sistema de coordenadas (coordinate system), que incluye tanto sistemas de coordenadas geogrficas como proyectadas, se utiliza para describir informacin sobre la proyeccin, Datum, unidades y meridianos. La referencia de ArcXML contiene las siguientes listas con definiciones e identificadores para sistemas de coordenadas: Sistemas de coordenadas proyectadas Sistemas de coordenadas geogrficas Transformaciones de datum COORDSYS define los Metadatos de la proyeccin de capas. No realiza ninguna funcin de reproyeccin y corresponde al contenido de un archivo *.prj. Para poder proyectar o transformar datos tipo Shape, coberturas o ArcSDE, es necesario definir COORSYS o crear un archivo *.pjr. Adems de datos tipo vector, COODSYS puede aplicarse a datos tipo raster y capas tipo acetato.
BGR - PN 1999.2103.2
Pgina 26 de 83
mayo de 2005
FEATURECOORDSYS especifica un sistema comn de coordenadas para la transformacin de las capas contenidas en un servicio de mapas. FEATURECOORDSYS representa la proyeccin general de los datos por parte del servidor espacial. Este sistema de coordenadas puede diferenciarse del sistema definido para cada capa. FILTERCOORDSYS se utiliza para definir el sistema de coordenadas del cliente. De la misma forma como en el caso de COORDSYS, se trata de informacin tipo Metadatos. Hay que incluir FILTERCOORDSYS en archivos de configuracin de mapas para poder utilizar FEATURECOORDSYS. En los archivos de configuracin, FEATURECOORDSYS y FILTERCOORDSYS deben tener el mismo valor. En peticiones los dos elementos pueden tener diferentes valores. Si es necesario realizar una transformacin de Datum, el atributo datumtransformid hay que incluirse en los elementos <FEARTURECOORDSYS>, <FILTERCOORDSYS> y <COORDSYS>. Ejemplo NAD27 a WGS84: <MAP dynamic="true" > <!- - Ejemplo en un archivo de configuracin - -> <PROPERTIES> <FEATURECOORDSYS id="4326" /> <!- - coordenadas geogrficas en WGS84 - -> <FILTERCOORDSYS id="4326" /> </PROPERTIES> <LAYER type="image" name=Managua" visible="true" id=MGA27" > <DATASET name=managua_nad27.sid" type="image" workspace="jai_ws-18" /> <COORDSYS id=26716 datumtransformid=1170 /> <!- - de NAD27 a WGS84 - -> </LAYER> Si se define FEATURECOORDSYS, el servidor espacial calcula automticamente las unidades correctas. El atributo MAPUNITS est ignorado. Al especificar FEATURECOORDSYS y COORDSYS, objetos generados en capas acetato deben utilizar el atributo units="database".
BGR - PN 1999.2103.2
Pgina 27 de 83
mayo de 2005
Prctica 1
Unin de una tabla DBF externa y creacin de etiquetas o un clasificacin basada en un campo de la tabla unida
* <WORKSPACES> <SHAPEWORKSPACE name="shp_ws-0" directory=C:\Curso ArcIMS 5-05 Parte 2\Datos\soter_ca" /> </WORKSPACES> <LAYER type="featureclass" name="soterca" visible="true" id="0"> <DATASET name="soterca" type="polygon" workspace="shp_ws-0" /> <SPATIALQUERY jointables="SOILCOMP" joinexpression="To=[soterca.SUID], From=[SOILCOMP.SUID], Type=[exact]" /> <GROUPRENDERER> <SIMPLELABELRENDERER field="SOILCOMP.PRID" > <TEXTSYMBOL font="Arial" fontstyle="bold" fontsize="10" /> </SIMPLELABELRENDERER> <VALUEMAPRENDERER lookupfield="SOILSEL"> <EXACT value="ACh" label="ACh"> <SIMPLEPOLYGONSYMBOL filltransparency="1.0" fillcolor="115,131,37" boundarycaptype="round" /> </EXACT> <EXACT value="ACu" label="ACu"> <SIMPLEPOLYGONSYMBOL filltransparency="1.0" fillcolor="166,182,85" boundarycaptype="round" /> </EXACT> <EXACT value="ALh" label="ALh"> <SIMPLEPOLYGONSYMBOL filltransparency="1.0" fillcolor="177,186,132" boundarycaptype="round" /> </EXACT> * Nota: El ejemplo completo se encuentra en practica3-1.axl
Modificacin avanzada de archivos de configuracin 7
Prctica 2
*<MAP> <PROPERTIES> <ENVELOPE minx="-92.232" miny="7.211" maxx="-77.153" maxy="17.818" name="Initial_Extent" /> <MAPUNITS units="decimal_degrees" /> </PROPERTIES> <WORKSPACES> <SHAPEWORKSPACE name="shp_ws-0" directory=C:\Curso ArcIMS 5-05 Parte 2\Datos\soter_ca" /> </WORKSPACES> <LAYER type="featureclass" name="soterca" visible="true" id="0"> <DATASET name="soterca" type="polygon" workspace="shp_ws-0" /> <SPATIALQUERY jointables="SOILCOMP" joinexpression="To=[soterca.SUID], From=[SOILCOMP.SUID], Type=[exact]" subfields="CNTRCODE CNTRNAME SOILSEL LITH SOILCOMP.PRID" /> <EXTENSION type="Extract" > <EXTRACTPARAMS clip="true" > <OUTPUTFILE file="soter_ca" > <OUTPUTFIELD name="CNTRCODE" alias="CODIGOPAIS" /> <OUTPUTFIELD name="CNTRNAME" alias="NOMBREPAIS" /> <OUTPUTFIELD name="SOILSEL" alias="TIPOSUELO" /> <OUTPUTFIELD name="LITH" alias="LITOLOGIA" /> <OUTPUTFIELD name="SOILCOMP.PRID" alias="ID_SUELO" /> </OUTPUTFILE> </EXTRACTPARAMS> </EXTENSION> *Notas: - El ejemplo completo se encuentra en practica3-2.axl - Un visor ejemplar con funcin de descarga se encuentra en ..\Visores\Extract
Modificacin avanzada de archivos de configuracin 8
BGR - PN 1999.2103.2
Pgina 28 de 83
mayo de 2005
Prctica 3
*<MAP dynamic="true" > <PROPERTIES> <FILTERCOORDSYS id="4326" /> <FEATURECOORDSYS id="4326" /> <BACKGROUND color="0,0,0" transcolor="0,0,0"/> </PROPERTIES> <WORKSPACES> <IMAGEWORKSPACE name="jai_ws-17" directory="C:\Curso ArcIMS 5-05 Parte 2\Datos" /> <IMAGEWORKSPACE name="jai_ws-18" directory="C:\Curso ArcIMS 5-05 Parte 2\Datos\etm" /> <SHAPEWORKSPACE name="shp_ws-19" directory="C:\Curso ArcIMS 5-05 Parte 2\Datos" /> </WORKSPACES> <LAYER type="image" name="NASA MODIS 1km (2001)" visible="true" id="ca_modis_1km" minscale="1:2500000"> <DATASET name="ca_1km.sid" type="image" workspace="jai_ws-17" /><COORDSYS id="4326" /> </LAYER> <LAYER type="image" name="ETM N1610" visible="true" id="N1610" maxscale="1:2500000"> <DATASET name="n-16-10.sid" type="image" workspace="jai_ws-18" /><COORDSYS id="32616" /> </LAYER> <LAYER type="image" name="ETM N1615" visible="true" id="N1615" maxscale="1:2500000"> <DATASET name="n-16-15.sid" type="image" workspace="jai_ws-18" /><COORDSYS id="32616" /> </LAYER> <LAYER type="image" name="ETM N1705" visible="true" id="N1705" maxscale="1:2500000"> <DATASET name="n-17-05.sid" type="image" workspace="jai_ws-18" /><COORDSYS id="32617" /> </LAYER> *Nota: El ejemplo complete se encuentra en sismos_geor.axl
Modificacin avanzada de archivos de configuracin 9
BGR - PN 1999.2103.2
Pgina 29 de 83
mayo de 2005
Comandos externos Informacin sobre servicios de mapas y catlogos Configuracin y manejo de seguridad
BGR - PN 1999.2103.2
Pgina 30 de 83
mayo de 2005
Los servicios de mapas, as como los servidores espaciales y virtuales, pueden administrarse desde el smbolo de comandos a partir de aplicaciones Java instalados con el sistema. Adems, es posible obtener informacin sobre las caractersticas del sitio Web a travs de comandos Java. Para administrar los servicios de mapas desde el smbolo de comandos, deben utilizarse los siguientes dos archivos: Un archivo XML con cdigo utilizando el elemento <ADMINCMD> Un archivo batch o de cadena de comandos para facilitar la ejecucin de la solicitud.
Todas estas instrucciones utilizan la siguiente aplicacin Java instalada con el sistema: com.esri.aims.admincore.cmd.Exec. El archivo XML puede contener instrucciones para adicionar, iniciar, parar y borrar servicios de mapas, as como para adicionar o quitar servidores fsicos y virtuales. A continuacin se muestran unos ejemplos de comandos de la aplicacin Java com.esri.aims.admincore. cmd.Exec para obtener informacin sobre el sitio ArcIMS.
BGR - PN 1999.2103.2
Pgina 31 de 83
mayo de 2005
BGR - PN 1999.2103.2
Pgina 32 de 83
mayo de 2005
El conector Servlet de ArcIMS permite el envo de cualquier solicitud ArcXML vlida al servidor espacial no hay comprobacin de la autorizacin de las solicitudes. Sin embargo, y debido al hecho de que slo las solicitudes vlidas de ArcXML estn permitidas, no es posible enviar comandos al servidor espacial que puedan corromper la integridad del sistema ArcIMS. No existe ningn peligro para la seguridad de los datos o acceso ilegal. Los usuarios slo pueden acceder a las capas de informacin publicadas en los servicios de mapas, y solamente a travs de cdigo ArcXML. Para aumentar la seguridad de un sitio Web y restringir el acceso a ciertas pginas Web, el software del servidor Web dispone de funcionalidades para implementar mtodos de autentificacin de usuarios con nombre y contrasea. La mayora de los servidores de Web soporta dos tipos de autenticacin: bsica y digest. El ltimo tipo de autenticacin es ms seguro (descifra la contrasea), sin embargo, slo el bsico est implementado en la mayora de los navegadores. El conector Servlet permite la restriccin del acceso no slo a sitios Web, sino tambin a servicios de mapas en particular. El ejemplo de la prctica siguiente explica los pasos a seguir para implementar este nivel de seguridad. El nivel de seguridad ms alto puede implementarse a travs de la instalacin de los denominados Firewall, equipos especialmente configuradas y ubicadas en la entrada a la Web de una institucin para controlar cualquier acceso desde el Internet.
BGR - PN 1999.2103.2
Pgina 33 de 83
mayo de 2005
Los conectores ActiveX, Java y Servlet permiten restringir el acceso a servicios de mapas para que solo usuarios autenticados puedan accederlos. Los conectores ActiveX y Servlet proveen autenticacin va HTTP, el conector Java HTTP o TCP/IP. De forma predefinida, la autenticacin est deshabilitada y todas las peticiones estn enviadas al servidor de Aplicaciones por el conector. Sin embargo, los conectores pueden configurarse para verificar la autenticacin del cliente en base a: - nombre de usuario y contrasea - nmero IP del cliente - privilegios de acceso Para este fin, los conectores utilizan listas de control de acceso (ACL) para designar servicios libres y restringidos y los criterios de autenticacin, tales como nombres de usuarios y claves de acceso. Existen dos tipos de ACL: basadas en archivos o basadas en Java Database Connectivity (JDBC). La ventaja de ACL basadas en archivo es que se generan y modifican fcilmente con un editor de texto y que no se requiere de componentes adicionales. El ACL se crea en formato de un archivo XML y su contenido se carga a la memoria del sistema al iniciar el motor Servlet. Al modificar el archivo, hay que reiniciar el motor. En caso de ACL basada en JDBC, los permisos se almacenan en una base de datos relacional (SGBDR) accedido a travs del dispositivo JDBC. Es recomendado utilizar esta forma de ACL en caso de muchos usuarios, modificaciones frecuentes y por requerimientos de confidencialidad de datos personales.
BGR - PN 1999.2103.2
Pgina 34 de 83
mayo de 2005
Prctica 1
Manejo de ArcIMS y obtencin de informacin sobre servicios y servidores con comandos externos
java com.esri.aims.admincore.cmd.Exec http://maguncia admin admin file .. .. <?xml version="1.0"?> <ADMINCMD version="1.0"> <SERVICES> <SERVICE type="stop" name="test" /> <SERVICE type="remove" name="test" /> </SERVICES> </ADMINCMD>
java com.esri.aims.admincore.cmd.Exec http://maguncia admin admin CMD SAVE java com.esri.aims.admincore.cmd.Exec http://maguncia admin admin CMD SERVICE java com.esri.aims.admincore.cmd.Exec http://maguncia admin admin CMD MONITOR java com.esri.aims.admincore.cmd.Exec http://maguncia admin admin CMD VSERVER
Administracin avanzada de ArcIMS 5
Prctica 2
Creacin de un servicio de mapas con restricciones de acceso definidos en un ACL en formato XML
Paso 1: Crear un nuevo archivo de configuracin de mapas. Paso 2: Editar el archivo Esrimap_prop en: <ArcIMS>\Connectors\Servlet enable=True Habilita el conecetor Servlet authenticate=True Habilita la autentificacin del conector servlet authMethods=Basic - Basic y Digest authenticateWithSessions=True Ms eficiente para los clientes sessionTimeout=120 - 120 segundos es un valor adecuado aclFileName=<ruta completa al archivo ACL>/aimsacl.xml realm=Servicios Georiesgos - Ttulo de la ventana de dilogo Paso 3: Crear un archivo XML (el archivo ACL) <?xml version="1.0"?> <AIMSACL> <USER name=* services=Practica1, Practica2 /> <USER name=privado password=qwert99 services=Sismos_Ineter trustedclients="192.168.0.1-192.168.0.255" /> </AIMSACL>
BGR - PN 1999.2103.2
Pgina 35 de 83
mayo de 2005
La herramienta sendArcXML Informacin sobre servicios Navegacin y representacin de las capas: Zoom y Pan Cambiar el orden de despliegue de las capas Manipular la visibilidad de las capas Cambio de simbologa Visualizacin en dependencia de escala Filtrar los datos Cambiar las propiedades de la imagen de salida Generacin de capas dinmicas Desplegar subsets de capas Agregar nuevos juegos de datos Agregar capas tipo acetato Creacin de la leyenda del mapa Extraccin de datos Consulta de atributos y de objetos espaciales
BGR - PN 1999.2103.2
Pgina 36 de 83
mayo de 2005
La herramienta sendArcXML enva peticiones ArcXML al servidor ArcIMS y despliega las respuestas en formato texto
La herramienta sendArcXML de ESRI permite enviar consultas al servidor espacial y observar sus respuestas. Utiliza el ciclo completo de consulta-respuesta de los clientes HTML estndares de ArcIMS. sendArcXML es un ayudante verstil el el desarrollo de aplicaciones que utilizan ArcXML para su comunicacin con servicios ArcIMS. La herramienta es programada en HTML y Javascript y debe instalarse en la misma ruta de los sitios Web de ArcIMS. El archivo sendArcXMLparam.js contiene una serie de variables bsicas que deben ajustarse antes de utilizar la herramienta.
BGR - PN 1999.2103.2
Pgina 37 de 83
mayo de 2005
envelope - informacin sobre la extensin (zoom) del servicio de mapas fields - descripcin de la estructura de las tablas de atributos renderer - informacin sobre la simbologa de capas extensions - informacin sobre extensiones definidas para capas (p.ej. EXTRACT) dpi - recalcula escalas mnimas y mximas para diferentes resoluciones
El resultado de esta consulta est contenido en la respuesta <SERVICEINFO>.
Consultas de la informacin espacial y de atributos 2
Ejemplo de una respuesta SERVICES: <?xml version="1.0"?> <ARCXML version="1.1"> <RESPONSE> <SERVICES> <SERVICE name="CA_OV" servicegroup="ImageServer1" access="PUBLIC" type="ImageServer" version="" status="ENABLED" > <IMAGE type="JPG" /> <ENVIRONMENT> <LOCALE country="US" language="en" variant="" /><UIFONT name="SansSerif" /> </ENVIRONMENT> <CLEANUP interval="10" /> </SERVICE> <SERVICE name="Practica" servicegroup="ImageServer1" access="PUBLIC" type="ImageServer" version="" status="ENABLED" > <IMAGE type="JPG" /> <ENVIRONMENT> <LOCALE country="US" language="en" variant="" /><UIFONT name="SansSerif" /> </ENVIRONMENT> <CLEANUP interval="10" /> </SERVICE> <SERVICE name="Sismos_INETER" servicegroup="ImageServer1" access="PUBLIC" type="ImageServer" version="" status="ENABLED" > <IMAGE type="JPG" />
BGR - PN 1999.2103.2
Pgina 38 de 83
mayo de 2005
Ejemplo de una respuesta SERVICEINFO: <?xml version="1.0" encoding="UTF-8"?> <ARCXML version="1.1"> <RESPONSE> <SERVICEINFO> <ENVIRONMENT> <LOCALE language="en" country="US" /><UIFONT name="SansSerif" color="0,0,0" size="12" style="regular" /> <SEPARATORS cs=" " ts=";"/><CAPABILITIES forbidden="" disabledtypes=""/> <SCREEN dpi="96"/><IMAGELIMIT pixelcount="2621440" /> </ENVIRONMENT> <PROPERTIES> <ENVELOPE minx="-92.232" miny="7.211" maxx="-77.153" maxy="17.818" name="Initial_Extent" /> <MAPUNITS units="decimal_degrees" /> </PROPERTIES> <LAYERINFO type="featureclass" visible="true" name="adm_l2" id="2"> <FCLASS type="polygon"></FCLASS> </LAYERINFO> <LAYERINFO type="featureclass" visible="true" name="Pases" id="1"> <FCLASS type="polygon"></FCLASS> </LAYERINFO> <LAYERINFO type="featureclass" visible="false" name="adm_l3" id="2b"> <FCLASS type="polygon"></FCLASS> </LAYERINFO> <LAYERINFO type="featureclass" visible="true" name="latlong" id="3"> <FCLASS type="line"></FCLASS> </LAYERINFO> <LAYERINFO type="featureclass" visible="true" name="viasca_cdcw" id="9"> <FCLASS type="line"></FCLASS> </LAYERINFO><LAYERINFO type="featureclass" visible="true" name="Ciudades" id="5"> <FCLASS type="point"></FCLASS> </LAYERINFO> </SERVICEINFO> </RESPONSE> </ARCXML>
BGR - PN 1999.2103.2
Pgina 39 de 83
mayo de 2005
La consulta GET_IMAGE (respuesta IMAGE) es la principal funcin para definir o modificar la simbologa (relleno, smbolos) de un mapa. GET_IMAGE crea un mapa en un archivo tipo imagen en el servidor espacial y provee informacin sobre el nombre y ruta de la imagen del mapa (image map). Las solicitudes de GET_IMAGE son enviadas al servidor virtual tipo imagen. Realizando cambios en los parmetros PROPERTIES y LAYER, es posible cambiar el despliegue de un servicio de mapas.
BGR - PN 1999.2103.2
Pgina 40 de 83
mayo de 2005
Las funciones Zoom y Pan en un cliente de mapas se realiza a travs del cambio de la extensin del mapa. La extensin de un mapa se modifica a partir de la definicin de nuevas coordenadas min y max en el parmetro ENVELOPE de la clusula PROPERTIES de GET_IMAGE. Para cambiar el tamao del mapa resultante se modifica el parmetro IMAGESIZE.
BGR - PN 1999.2103.2
Pgina 41 de 83
mayo de 2005
LAYERLIST y LAYERDEF se utilizan en una consulta GET_IMAGE para manipular la apariencia de capas en el mapa resultante. Algunas de las modificaciones comunes son: Definir la visibilidad de capas Cambiar la simbologa de capas Realizar consultas SQL con las capas Cambiar el orden de despliegue de capas
El orden de las capas configuradas en un archivo de configuracin puede modificarse con los atributos nodefault y order en el elemento LAYERLIST. Con el atributo nodefault="true", se despliegan solamente las capas indicadas en LAYERLIST pero en el orden establecido en el archivo de configuracin. Para cambiar el orden de despliegue de las capas hay que ajustarse el atributo order=true. En este modo, solamente las capas indicadas en elementos LAYERDEF se despliegan y en el orden establecido en LAYERLIST. El cambio de orden de capas no afecta el orden en la leyenda.
BGR - PN 1999.2103.2
Pgina 42 de 83
mayo de 2005
ArcXML maneja simbologa y etiquetas (label) a partir de los elementos tipo RENDERER. Cada RENDERER incluye un smbolo o una etiqueta, dependiendo del tipo de elemento geogrfico a simbolizar. La estructura bsica del elemento RENDERER es la siguiente: <RENDERER> <SYMBOL /> </RENDERER> ArcIMS (y ArcXML) dispone de seis diferentes tipos de RENDERER: SIMPLERENDERER SIMPLELABELRENDERER VALUEMAPRENDERER VALUEMAPLABELRENDERER GROUPRENDERER SCALEDEPENDENTRENDERER VALUEMAPRENDERER y VALUEMAPLABELRENDERER disponen de tres subelementos para crear mapas clasificados: - RANGE - EXACT - OTHER Cada RENDERER puede contener solamente un tipo de smbolo. Para crear simbologa compleja se combinan varios RENDERER en un GROUPRENDERER.
BGR - PN 1999.2103.2
Pgina 43 de 83
mayo de 2005
A continuacin se muestran los smbolos que pueden ser utilizados en SIMPLERENDERER y VALUEMAPRENDERER: Capas de puntos: SIMPLEMARKERSYMBOL RASTERMARKERSYMBOL TRUETYPEMARKERSYMBOL Capas de lneas: HASHLINESYMBOL SIMPLELINESYMBOL + Smbolos de capas de puntos Capas de polgonos: GRADIENTFILLSYMBOL RASTERFILLSYMBOL SIMPLEPOLYGONSYMBOL + Smbolos de capas de puntos y de lneas Los siguientes smbolos pueden ser utilizados para etiquetas en SIMPLELABELRENDERER y VALUEMAPLABELRENDERER: CALLOUTMARKERSYMBOL CHARTSYMBOL RASTERSHIELDSYMBOL SHIELDSYMBOL TEXTSYMBOL El elemento GROUPRENDERER se utiliza si se requiere combinar dos a ms RENDERER para crear simbologa compleja. De la misma forma, se aplica GROUPRENDERER para la creacin de smbolos en conjunto con etiquetas. El ejemplo a continuacin muestra la creacin de un GROUPRENDERER compuesto por dos SIMPLERENDERER dibujando polgonos en color opaco con una trama de lneas cruzadas y un SIMPLELABELRENDERER generando una etiqueta para cada polgono.
BGR - PN 1999.2103.2
Pgina 44 de 83
mayo de 2005
La simbologa de capas puede modificarse mediante la definicin de elementos RENDERER en el elemento LAYERDEF. Sin definicin de elementos RENDERER, el mapa se despliega en la simbologa predefinida en el archivo de configuracin. La sintaxis para la definicin de RENDERER es igual a la de los archivos de configuracin.
BGR - PN 1999.2103.2
Pgina 45 de 83
mayo de 2005
Consultas espaciales y de atributos se definen en el elemento <LAYERDEF>. Para seleccionar o filtrar elementos espaciales en base a sus atributos, se define una consulta en un elemento <SPATIALQUERY>. Para consultar elementos espaciales en base a su ubicacin, un filtro espacial <SPATIALFILTER> puede incluirse en <SPATIALQUERY>. La expresin en el atributo where corresponde al sntaxis de clausulas SQL. Algunos de los operadores utilizados en las clausulas where (y tambin en leyendas y nombres de capas) deben mascararse con los siguientes caracteres (escape characters): Y tipogrfica (&) se mascara a & Doble comillas (") se mascara a " Comillas (') se mascara a ' Mayor de (>) se mascara a > Menor de (<) se mascara a <
Los siguientes operadores SQL pueden utilizarse en una clausula where: =, >, >=, <, <=, <>, LIKE, BETWEEN, IN, NOT IN. ORDER BY y DISTINCT no son vlidos. Caracteres especiales de localizacin nacional deben mascararse con su cdigo ASCII: por ejemplo se mascara con Ñ SPATIALQUERY se utiliza tambin para relacionar archivos DBF con shapefiles o tablas ArcSDE. Para relacionar tablas DBF a un shapefile se utiliza los atributos jointables y joinexpression.
BGR - PN 1999.2103.2
Pgina 46 de 83
mayo de 2005
La sintaxis de joinexpression es "To=[campo de la tabla principal], From=[campo de la tabla secundaria], Type=[exact or scan]". Los parametros exact y scan: Exact: Scan: para relaciones uno-a-uno y uno-a-varios para relaciones varios-a-uno y varios-a-varios
BGR - PN 1999.2103.2
Pgina 47 de 83
mayo de 2005
Si se usa el elemento BUFFER en una consulta espacial (<SPATIALQUERY>), el servidor espacial crear un polgono (corredor, rea de inters) alrededor de los elementos geogrficos seleccionados por la consulta. BUFFER en combinacin con TARGETLAYER crea un corredor alrededor de los elementos seleccinados por SPATIALQUERY y selecciona los elementos de la capa especificada en TARGETLAYER que se encuentran dentro de este corredor. Integrado en el elemento <SPATIALFILTER>, BUFFER define un nuevo polgono de filtro espacial. Este polgono cambiar la geometra del filtro espacial existente y se usar como nuevo filtro.
BGR - PN 1999.2103.2
Pgina 48 de 83
mayo de 2005
En peticiones, al igual como en los archivos de configuracin, la proyeccin de un mapa puede modificarse con los siguientes elementos: COORDSYS FEATURECOORDSYS FILTERCOORDSYS
En caso de peticiones, FILTERCOORDSYS especifica el sistema de coordenadas utilizadas en elementos de la peticin (p. ej. en ENVELOPE) y debe diferenciarse de FEATURECOORDSYS para realizar una reproyeccin dinmica del mapa solicitada. En presente ejemplo, todas la peticin utiliza coordenadas Geogrficas, y por lo tanto se especifica el ID 4326. FEATURECOORDSYS especifica a cual sistema de coordenadas debe transformarse el servicio de mapas. En nuestro ejemplo se trata del ID 32616que es el identificador de UTM 16N WGS84. Se debe tomar en cuenta que para capas o objetos sin definicin del sistema de coordenadas en un en el archivo de configuracin o archivo .prj hay que especificar el elemento COORDSYS.
BGR - PN 1999.2103.2
Pgina 49 de 83
mayo de 2005
A partir del parmetro LAYER de la consulta GET_IMAGE, se pueden adicionar capas (layer) dinmicas a las ya existentes en un servicio de mapas. Existen dos tipos de capas dinmicas: Para agregar una copia de una capa existente en un servicio de mapas con el fin de mostrar un subconjunto de datos sobre los ya existentes. Para generar objetos grficos o cartogrficos a desplegar en una capa acetato sobre el mapa original.
En el presente ejemplo, la capa dinmica creada despliega el polgono correspondiendo a Nicaragua en color amarillo superpuesto sobre el mapa original, lo que podra representar una seleccin espacial o por atributos.
BGR - PN 1999.2103.2
Pgina 50 de 83
mayo de 2005
Al especificar el nombre de un archivo Shape o capa ArcSDe en el elemento DATASET, es posible agregar capas no existentes en el servicio de mapas. Todos los tipos de capa son vlidos: puntos, lneas, polgonos, e imagen. Para poder agregar capas dinmicas es necesario incluir el parmetro dynamic="true en el elemento MAP del archivo de configuracin de mapas: <MAP dynamic="true" > Nota importante: Las capas dinmicas slo pueden desplegarse. No es posible realizar consultas (Query, Identify, Search). La alternativa es incluir todos los datos en el archivo de configuracin y utilizar LAYERDEF para habilitar o deshabilitar el despliegue de las capas. Para agregar datos nuevos, el elemento DATASET debe especificar un WORKSPACE. Este WORKSPACE debe configurarse en el archivo de configuracin.
BGR - PN 1999.2103.2
Pgina 51 de 83
mayo de 2005
Los Acetate Layers (capas transparentes) pueden desplegar elementos geomtricos, grficos o cartogrficos sobre un mapa. Este tipo de capas slo son visibles en los visores HTML de ArcIMS o los que trabajan con conectores ActiveX, ColdFusion, Java y .NET. ArcExplorer y el visor Java no las despliegan Los Acetate Layers estn compuestos por uno o varios OBJETOS, tales como lneas, smbolo de norte, puntos, polgonos, barra de escala y texto. Capas acetato son diseados para desplegar una cantidad limitada de objetos si se generan un cantidad de objetos demasiada grande, el rendimiento del sistema puede deteriorarse. Las capas acetato se componen de uno o varios elementos OBJECT definidos en un elemento LAYER especificando el atributo type=acetate. La estructura bsica de los elementos OBJECT es la siguiente: <OBJECT units ="database | pixel - unidades de coordenadas lower ="double" [1:1] - escala mnima upper ="double" [1:infinito] - escala mxima > <LINE... /> | <NORTHARROW... /> | <POINT... /> /| <POLYGON... /> | <SCALEBAR... /> | <TEXT... /> | <COORDSYS... /> </OBJECT >
BGR - PN 1999.2103.2
Pgina 52 de 83
mayo de 2005
LEGEND puede utilizarse en una peticin GET_IMAGE para generar una leyenda e incluirla en la respuesta al mapa solicitado. LEGEND crea un archive tipo imagen (GIF, JPG, PNG) adicional y devuelve informacin sobre nombre y ruta de este archivo. El elemento DRAW puede utilizarse para solicitar ambos, una leyenda y un mapa. Se dispone de una gran cantidad de atributos que pueden emplearse para cambiar la apariencia y el diseo de la leyenda: Si el elemento padre es IMAGE: file ="string" type ="gif | jpg | png | png8" url ="string" Si el elemento padre es PROPERTIES con un servicio tipo Image: antialiasing ="true | false" [true] autoextend ="true | false" [false] backgroundcolor ="0,0,0 - 255,255,255" cansplit ="true | false" [false] cellspacing ="integer" [2] columns ="integer" [1] display ="true | false" [true] font ="Any system font" [Arial] height ="1 - NNN" [300] layerfontsize ="integer" [10]
BGR - PN 1999.2103.2
Pgina 53 de 83
mayo de 2005
LEGEND es solamente vlido con servicios tipo IMAGE o ArcMap Image en el visor HTML de ArcIMS o implementaciones propias.
BGR - PN 1999.2103.2
Pgina 54 de 83
mayo de 2005
Capas cuya visibilidad est inhabilitada en el archivo de configuracin o va los elementos <LAYERLIST> y <LAYERDEF> no aparecen en la leyenda. El elemento LAYERS puede utilizarse para eliminar capas de la leyenda sin modificar las capas en el mapa principal. Capas dinmicas que incluyen un elemento DATASET estn incluidas en la leyenda. Capas acetato no se incluyen el la leyenda.
BGR - PN 1999.2103.2
Pgina 55 de 83
mayo de 2005
El propsito de GET_EXTRACT y EXTRACT es el de extraer una o varias capas (layer) de un servicio de mapas tipo imagen y convertirlas en archivos tipo shape. GET_EXTRACT es muy similar a GET_IMAGE respecto a sus elementos y propiedades ArcXML. Una solicitud GET_EXTRACT identifica las capas a extraer junto con la extensin espacial y filtros definidos en el archivo de configuracin de mapas. Una vez extrado, el archivo tipo shape es comprimido en formato ZIP y guardado en una ruta definida en la solicitud. Para crear un servicio de mapas con capacidad de descarga de capas, hay que definir una extensin Extract en el archivo de configuracin de mapas. Para modificar el contenido o simbologa del mapa extrado, pueden utilizarse en una solicitud tipo GET_EXTRACT los siguientes parmetros: IMAGESIZE LAYERLIST y LAYERDEF SPATIALQUERY (o QUERY) LAYER OUTPUT Extraer mapas dependiendo de la escala Definir capas y simbologa a extraer Crear filtros antes de extraer los datos Adicionar capas antes de extraer los datos Cambiar la ruta y nombre del archivo a descargar
Las solicitudes de GET_EXTRACT se envan al servidor tipo Extract de la siguiente manera: http://miServidor/servlet/com.esri.esrimap.Esrimap?ClientVersion=9.0&ServiceName=miServicoDeMapas& CustomService=Extract&Form=True&Encode=True
BGR - PN 1999.2103.2
Pgina 56 de 83
mayo de 2005
IMAGESIZE calcula cuales capas extraer basado en dependencias de la escala. Si una capa est fuera del rango de la escala calculado en base a IMAGESIZE, la capa no se extrae. El valor predefinido de IMAGESIZE es 400 x 300 Pixel. Capas inhabilitadas en LAYERDEF con el atributo visible=false no se extraen. Si el atributo nodefault=true en el elemento LAYERLIST, solo las capas listadas en LAYERLIST se extraen. SPATIALQUERY puede utilizarse para filtrar y limitar los elementos y campos (con el atributo subfields) de una capa a extraer. Para limita el nmero de elementos (features) a extraer debe ajustarse el atributo featurelimit. Al igual como con la solicitud GET_IMAGE, los elementos COORDSYS, FEATURECOORDSYS, FILTERCOORDSYS y COORDSYS pueden utilizarse para reproyectar los datos antes de extraerlos a formato Shape.
BGR - PN 1999.2103.2
Pgina 57 de 83
mayo de 2005
Documentos ArcMap pueden contener ms que un conjunto de mapas (data frames) y al solicitar un mapa de un servicio tipo ArcMap Image, el elemento GET_IMAGE accede por predefinicin al data frame activo. Para obtener acceso a diferentes data frames, se utiliza el atributo dataframe. Navegacin a partir de <ENVELOPE> y modificacin de la visibilidad de capas a partir de <LAYERDEF> y <LAYERLIST> funcionan igual como con Image Service. No se puede cambiar el orden de despliegue de las capas. No se puede modificar la simbologa de las capas. Para acceder a los diseos de mapas (layout) de un documento ArcMap, se dispone del elemento GET_LAYOUT. El formato y tamao del layout est determinado por el documento ArcMap y no puede modificarse a travs de la peticin con GET_LAYOUT. Sin embargo, GET_LAYOUT puede solicitar los datos a diferentes niveles de Zoom y en otras proyecciones. La respuesta LAYOUT puede contener uno o varios dataframes en la misma pgina, adems de elementos grficos como textos, flecha de norte, barras de escala y leyendas. GET_LAYOUT tiene dos elementos hijo: PROPERTIES y DATAFRAME. El primero define caractersticas generales del diseo, tales como la extensin, las unidades de pgina y la proyeccin predefinida parta todos los dataframes. DATAFRAME provee informacin sobre un data frame individual, tales como nivel de Zoom, escala y proyeccin.
BGR - PN 1999.2103.2
Pgina 58 de 83
mayo de 2005
GET_FEATURES es una consulta verstil para acceder informacin geomtrica y de atributos. La informacin devuelta en la respuesta del servidor espacial est contenida en el elemento FEATURES. Las consultas tipo GET_FEATURES pueden realizarse en servicios de mapas tipo imagen y feature (vector). Dependiendo de los ajustes en los parmetros de GET_FEATURE, la respuesta del servidor espacial puede contener datos en formato ArcXML o en formato binario comprimido (feature stream). El formato binario puede utilizarse slo en clientes Java de ArcIMS. Las consultas GET_FEATURE a servicios de mapas tipo imagen estn limitadas a respuestas en formato ArcXML. Las consultas a un mapa se envan al servidor virtual tipo imagen (Image Server), mientras que las consultas a atributos deben enviarse al servidor virtual de consultas (Query Server). GET_FEATURES dispone de una serie de atributos que se utilizan para formatear la respuesta FEATURES. Entre otros son: outputmode, compact, geometry, skipfeatures, envelope, attributes, checkesc, y globalenvelope. Otros atributos pueden utilizarse para obtener informacin sobre el nmero de elementos devueltos por la respuesta: beginrecord, featurelimit, count, y hasmore.
BGR - PN 1999.2103.2
Pgina 59 de 83
mayo de 2005
Outputmode: binary: xml: newxml: geometry: compact: beginrecord: featurelimit: count: hasmore: skipfeatures: envelope: attributes: checkesc: globalenvelope:
respuesta en formato binario comprimido respuesta en formato ArcXML compacto respuesta en formato ArcXML detallado (cada campo en un elemento FIELD) solicita las coordenadas de los elementos encontrados devuelve las coordenadas en formato compacto o detallado el nmero del primer elemento a devolver la cantidad mxima de elementos a devolver el nmero de elementos encontrados true si la capa contiene ms que los elementos encontrados en la consulta si ajustado en true solo FEATURECOUNT est devuelto devuelve la extensin de cada elemento si ajustado en true los atributos de cada elemento estn devueltos si true los atributos incluyen caracteres mascarados ("> 1000") devuelve la extensin de todos los elementos encontrados.
BGR - PN 1999.2103.2
Pgina 60 de 83
mayo de 2005
GET_FEATURES slo puede consultar una capa de informacin a la vez. Las consultas no pueden realizarse con capas dinmicas y requieren incluir uno de los elementos SPATIALQUERY o QUERY. La consulta puede extraer datos basados en atributos, un filtro espacial (un rea) o una combinacin de ambos tipos. Debido a su capacidad para procesar consultas alfanumricas y geomtricas, se recomienda utilizar SPATIALQUERY para todos los tipos de consultas. Es obligatorio incluir un elemento SPATIALQUERY en el elemento GET_FEATURES. Para solicitar todos los elementos de una capa, SPATIALQUERY puede definirse con el atributo subfields para limitar las campos a devolver o con una clusula SQL vaca (where=).
BGR - PN 1999.2103.2
Pgina 61 de 83
mayo de 2005
20
Las consultas definidas en el elemento SPATIALQUERY pueden contener una expresin SQL where estndar de la siguiente forma: <SPATIALQUERY subfields="#ALL# | Operador_de_Comparacin Valor_Buscado" > #ID# | #SHAPE#" where="Nombre_Campo
Para buscar valores numricos se utiliza operadores de comparacin como: =, <, >, <=, >=, y <>. Valor_Buscado puede contener un valor fijo o una calculacin aritmtica bsica con: +, -, *, y /. Para buscar cadenas de texto se utiliza el operador = para encontrar texto exacto o el operador LIKE en combinacin con los wildcard _ o %. El primer wildcard encuentra cualquier carcter, el segundo encuentra cualquier secuencia de caracteres. Otros operadores permitidos son BETWEEN, IN, y NOT IN Si Valor_Buscado es una cadena de texto, hay que indicar el patrn en comillas sencillas. Para habilitar igualdad entre minscula y mayscula, el operador UPPER puede aplicarse al nombre del campo. En este caso, las cadenas de texto en Valor_Buscado deben estar en mayscula.
BGR - PN 1999.2103.2
Pgina 62 de 83
mayo de 2005
El elemento BUFFER con el elemento SPATIALQUERY como elemento padre funciona de la misma forma como en las solicitudes con GET_IMAGE, pero en vez de generar una imagen del buffer calculado o de los elementos seleccionados, GET_FEATURE devuelve las coordenadas de la geometra del Buffer, los atributos de los elementos seleccionados en TARGETLAYER o las coordenadas de sus geometras. Para poder utilizar BUFFER en SPATIALQUERY dentro de GET_FEATURES, un atributo subfields debe contener los campos #SHAPE# o #ALL#. Resultados de la operacin BUFFER pueden ser inexactos si los datos no estn proyectados as que se recomienda proyectar los datos antes de calcular corredores.
BGR - PN 1999.2103.2
Pgina 63 de 83
mayo de 2005
FILTERCOORDSYS y FEATURECOORDSYS pueden utilizarse en GET_FEATURES para transformar los elementos espaciales consultados. Los datos que pueden ser proyectados incluyen las extensiones establecidas en ENVELOPE y las coordenadas almacenadas en los elementos POINT y COORDS. Al igual como en GET_IMAGE, FILTERCOORDSYS especifica el sistema de coordenadas del cliente ejecutando la solicitud (coordenadas utilizadas en la solicitud). FEATURECOORDSYS especifica el sistema de coordenadas al cual deben transformarse los elementos consultados en solicitudes GET_FEATURE.
BGR - PN 1999.2103.2
Pgina 64 de 83
mayo de 2005
Prcticas
1. 2. 3. 4. 5. 6. 7. 8. 9.
Utilizar los elementos GETCLIENTSERVICES y GET_SERVICE_INFO Realizar Zoom y Pan con GET_IMAGE y ENVELOPE Modificar orden y visibilidad de capas con LAYERLIST y LAYERDEF Modificar la simbologa de capas con los diferentes tipos de RENDERER y SYMBOL Filtrar datos con SPATIALQUERY y generar corredores espaciales con BUFFER Transformar capas a otras proyecciones Desplegar un subconjunto de una capa con el elemento LAYER y SPATIALQUERY Generacin de capas acetato para el despliegue de objetos grficos Extraccin de mapas y descarga de archivos Shape
10. Filtrar objetos espaciales con <GET_FEATURES> y <SPATIALQUERY> 11. Anlisis espacial con <SPATIALQUERY> y <BUFFER> 12. Transformacin de geometra de objetos espaciales
Consultas de la informacin espacial y de atributos 23
BGR - PN 1999.2103.2
Pgina 65 de 83
mayo de 2005
Personalizacin del diseo del visor HTML: La estructura del conjunto de marcos (frameset) Modificacin del diseo del frameset Personalizacin de la barra de herramientas Formato y representacin del contenido de respuestas: JavaScript y peticiones ArcXML Interpretacin (parsing) de la respuesta Despliegue de la informacin interpretada Creacin e integracin de funciones personalizadas: Pasos para la creacin de funciones Habilitacin de una funcin personalizada Desarrollo de una funcin personalizada
Prcticas: Personalizacin del diseo del visor cliente Creacin de un funcin especializada
BGR - PN 1999.2103.2
Pgina 66 de 83
mayo de 2005
<FRAMESET ROWS=100,*,100> <FRAME name=Arriba src=arriba.htm> <FRAMESET COLS=300,*> <FRAME name=Izquierda src=izquierda.htm> <FRAME name=Derecha src=derecha.htm> </FRAMESET> <FRAME name=Abajo src=abajo.htm> </FRAMESET>
Abajo
Marcos HTML se definen en un archivo especial, en el caso del visor HTML en el viewer.htm. Este archivo no contiene los elementos a desplegar en un navegador (de hecho, no contiene un elemento BODY), sino una divisin del espacio disponible en diferentes ventanas incluidas en filas y columnas. Cada una de esta ventana esta ocupada por un archivo HTM con su propia declaracin de BODY. En cada elemento FRAMESET se definen la cantidad y el tamao de las filas y columnas. El tamao est expresado en nmero de Pixel, porcentaje de la ventana o con un asterisco (*) para asignar el resto del espacio disponible a una fila o columna. En el presente ejemplo, la etiqueta <FRAMESET ROWS=100,*,100> define 3 filas asignando 100 Pixel a la fila superior e inferior y el espacio restante a la fila central. Como contenido del marco superior se define arriba.htm. Dentro de la fila central se definen dos columnas, asignando 100 Pixel y el archivo izquierda.htm a la primera y el espacio restante y el archivo derecha.htm a la segunda fila. Finalmente se asigna el archivo abajo.htm a la fila inferior del Frameset. A travs del Frameset del visor HTML el diseador puede modificar la apariencia estructural del cliente es decir la ubicacin de cada elemento o ventana del visor en una pgina Web. Al quitar marcos de Frameset, es posible disear un visor simple, por ejemplo sin rea de despliegue de atributos o sin cabecera y pie de la pgina. Es tambin posible integrar el Frameset del cliente en un sitio Web existente utilizando por ejemplo un elemento IFRAME en el cual se incluye el default.htm. Sin embargo, hay que tomar en cuenta que algunos marcos despliegan ms que un tipo de contenido: el marco TOCFrame despliega tanto la lista de capas en el servicio de mapas y le permite al usuario
BGR - PN 1999.2103.2
Pgina 67 de 83
mayo de 2005
seleccionar la capa activada para consultas, como la imagen de la leyenda generada con cada solicitud GET_IMAGE. Eliminando el marco TOCFrame, deshabilitara tambin el despliegue del mapa y causara errores en la ejecucin de ciertos JavaScript que llaman a este marco, hecho que requiere del diseador modificar los JavaScript en cuestin. En el caso del TOCFrame existe un mtodo ms fcil que el diseador puede utilizar para deshabilitar el despliegue del TOCFrame. Se ajusta la variable showTOC=false en ArcIMSParams.js y la variable showLegend=true en la funcin checkParams. Si el despliegue de la lista de capas (TOC) est deshabilitada, el usuario no tiene la posibilidad de seleccionar la capa activada, qu es requerida para funciones de consulta, tales como Identify. Si por esta u otras razones es necesario predefinir la capa activada, se dispone de la variable ActiveLayerIndex a la cual se asigna el ndice de la capa a activar. Nota que la primer capa del archivo de configuracin corresponde al ndice 0. Otros cambios comunes en el diseo del visor HTML son la utilizacin de otras imgenes GIF para modificar la cabecera y pie de la pgina en top.htm, bottom.htm y modeframe.htm. Adicionalmente, el elemento BGCOLOR puede utilizarse para cambiar el color de fondo de estas pginas.
BGR - PN 1999.2103.2
Pgina 68 de 83
mayo de 2005
180
TocFrame TocFrame.htm
Resto de espacio
110
ModeFrame ModeFrame.htm
180
30
PostFrame
JSForm.htm
El presente diagrama ilustra el diseo predefinido para el conjunto de marcos del visor HTML de ArcIMS. Cada rea muestra el nombre del marco (nombres utilizados por ejemplo por las funciones de JavaScript) y el archivo HTML que representa el contenido de cada marco. El diagrama es una gua bsica para disear un visor personalizado. La determinacin del tamao y de la ubicacin final de los marcos queda a disposicin de los requerimientos del diseador.
BGR - PN 1999.2103.2
Pgina 69 de 83
mayo de 2005
La diapositiva muestra el cdigo HTML del Frameset predefinido del visor HTML de ArcIMS. La estructura visual del visor HTML est caracterizada por una serie de Framesets intercalados. El conjunto de marcos principal est compuesto por cuatro filas que contienen dos Frames y dos Framesets independientes. La primera fila est representada por la cabecera en el TopFrame, la segunda contiene un Frameset de tres columnas compuestas de la barra de herramientas, otro Frameset que contiene el mapa principal y el rea de despliegue de textos, y por un marco que contiene la tabla de contenido. La tercera fila est dividida en un Frameset de dos columnas dando rea de despliegue para ModeFrame y BottomFrame. La ltima fila almacena el formulario oculto definido en PostFrame.
BGR - PN 1999.2103.2
Pgina 70 de 83
mayo de 2005
Toolbar.htm es un archivo largo que utiliza HTML dinmico (DHTML) para crear una tabla de dos columnas cuyas celdas contienen los botones para las funciones activadas durante la generacin del visor en el Diseador. Cada botn est representado por dos iconos en formato GIF. Uno representa el estado acyivado de la herramienta y el otro el estado desactivado. La convencin de nombres para los archivos GIF es la siguiente: nombre_del_boton seguido por _1 para herramientas inactivas nombre_del_boton seguido por _2 para herramientas activas La funcin que establece el cambio del icono del botn en reaccin a la seleccin por parte del usuario es setToolPic. Al seleccionar una herramienta, todas la dems despliegan el icono correspondiente al estado inactivo (nombre_del_boton_1.gif), operacin que realiza la funcin revertToolPic. Por predefinicin, la barra de herramientas se despliega en una tabla de dos columnas. Para generar una barra de herramientas en solo una columna debe realizarse el siguiente ajuste en toolbar.htm: //isSecond = !isSecond; document.writeln('</td>'); //if (isSecond); document.write('</tr><tr>');
BGR - PN 1999.2103.2
Pgina 71 de 83
mayo de 2005
Todas las peticiones se generan a travs de funciones JavaScript almacenadas en las libreras correspondientes al tipo de funcin. Las funciones de despliegue general del mapa (elementos que deben generarse cada vez que se solicite el mapa) se encuentran en aimsXML.js. En este archivo se encuentran adems las funciones de comunicacin bsica (envo de peticiones y recepcin de respuestas) con el servidor. La generacin de las peticiones ArcXML se realiza en JavaScript mediante la creacin de cadenas de texto incluyendo cdigo ArcXML fijo y contenido de variables predefinidas o ajustadas en base a selecciones interactivas por parte del usuario. Una vez generada la peticin, la funcin generadora ejecuta la funcin sendToServer y htmlSendToServer (en aimsXML.js) que enva la peticin ArcXML al conector Servlet a travs del formulario en el PostFrame. En el presente ejemplo, todos los elementos generales del mapa principal (p.ej. Norte, barra de escala) se generan en la funcin writeXML() en aimsXML.js que por su parte es ejecutada cada vez que se solicite la creacin del mapa central mediante la funcin sendMapXML().
BGR - PN 1999.2103.2
Pgina 72 de 83
mayo de 2005
var pos = theReply.indexOf("OUTPUT"); if (pos != -1) { theURL = getInsideString(theReply,'url="',dQuote,pos,0,false); } Funcin para extraer cadenas de texto legendImage = getLegendURL(theReply); return theURL; }
Funcin devuelve el URL de la imagen
A diferencia con lenguajes como Java, JSP o ASP, JavaScript no provee con mtodos especializados en la interpretacin de documentos XML JavaScript no puede acceder al DOM o SAX y, en consecuencia, no dispone de funciones reales de parsing de documentos XML. En su vez, la librera de JavaScript del visor HTML contiene una serie de funciones que realizan la interpretacin de las respuestas del servidor espacial. La funcin central en este proceso es processXML en aimsXML.js ejecutada por el PostFrame cada vez que se regenera mediante el conector Servlet despus de haber enviado la peticin al servidor y recibido la respuesta. La funcin processXML contiene algunas funciones de interpretacin, como la de extraer el URL de la imagen del mapa de las respuestas a peticiones GET_IMAGE (ver presente ejemplo), pero en la mayora de los casos llama a funciones correspondientes al tipo de la peticin en los respectivos archivos JavaScript. La interpretacin y representacin visual de respuestas a consultas de atributos (GET_FEATURES) por ejemplo, se realiza con la funcin displayAttributeData en aimsIdentify.js.
BGR - PN 1999.2103.2
Pgina 73 de 83
mayo de 2005
La representacin visual de las respuestas ArcXML se realiza a travs de la generacin de HTML dinmico. En los Website estndares de ArcIMS, la funcin displayAttributeData() en aimsidentify.js llama a writeOutDataPage que formatea el contenido de respuestas (FEATURE) a peticiones tipo GET_FEATURE. La funcin crea, de forma dinmica, una tabla HTML con los valores de la tabla de atributos. Se utilizan las funciones parseRecordString, getFieldNames y getFieldValues para controlar y extraer los valores y nombres de campos. Estas funciones utilizan el elemento <FIELD> en la respuesta para extraer los nombres y valores de campos. function parseRecordString(theReply, startpos) { var inData = ""; var pos = theReply.indexOf("<FIELDS ",startpos); if (pos!=-1) { startpos = pos + 8; xmlEndPos = theReply.indexOf('" />',startpos); inData = theReply.substring(startpos,xmlEndPos); } return inData; }
BGR - PN 1999.2103.2
Pgina 74 de 83
mayo de 2005
Paso 1: Entre las lneas 50 y 70 del archive ArcIMSparam.js se definen las variables de las herramientas del visor. Si una variable est en true, se activa la herramienta. Se agrega una nueva lnea de texto para definir una variable de la herramienta nueva por ejemplo miHiperlink=true. Paso 2: Hay que hacer tres modificaciones en toolbar.htm para aadir la herramienta a la barra de herramientas. Adems, hay que copiar dos imgenes gif a la carpeta /images para visualizar la herramienta en estado seleccionado y deseleccionado. La primera modificacin en toolbar.htm es ajustar la funcin revertToolPic() que determina la versin deseleccionada del icono. La segunda edicin se realiza en setToolPic() que determina la versin seleccionada del icono. La tercer modificacin es agregar cdigo para aadir la herramienta a la barra (se puede ubicar entre las herramientas ya existentes, por ejemplo entre Identify y Quero). Se pueden comprobar las modificaciones al refrescar el navegador al presionar la herramienta y recibir un mensaje Function not enabled las modificaciones han sido correctas.
BGR - PN 1999.2103.2
Pgina 75 de 83
mayo de 2005
Paso 3: Agregar un modo para la herramienta personalizada en aimsClick.js en la funcin clickFunction() (aprox. en lnea 130). Esta funcin tiene una serie de bloques de cdigo que cambian la variable toolMode segn el usuario selecciona una herramienta. Puede copiarse un bloque y copiarlo a final de la funcin para su edicin. Paso 4: Por ultimo hay que darle funcionalidad a la herramienta y que es la parte ms complicada del proceso. Bsicamente, debe crearse funcionalidad apropiada para enviar comandos ArcXML al servidor ArcIMS. La funcin customMapTool(e) en aimsCustom.js se ejecuta si la variable toolMode es mayor que 1000, as que se debe incluir cdigo en esta funcin y crear una condicin de ejecucin con el toolMode ajustado en clickFunction() para la herramienta personalizada. Asimismo, debe programarse cdigo adecuado para el procesamiento de la respuesta ArcXML e incluir este cdigo en la funcin useCustomFuntion() la cual se ejecuta a travs de PostFrame si el toolMode es mayor que 1000.
BGR - PN 1999.2103.2
Pgina 76 de 83
mayo de 2005
Ejemplo para la creacin de una funcin nueva: implementar GET_EXTRACT en el visor HTML estndar. Nota: la funcionalidad de Extract ya est pre-preparada en los visores HTML. Ya existe un botn y funciones vacas para agregar cdigo personalizado. Paso 1: Agregar la extensin EXTRACT a una de los elementos LAYER del archivo de configuracin para habilitar el servidor de extraccin: <LAYER type="featureclass" name="Pases" visible="true" id="1"> <DATASET name="paises" type="polygon" workspace="shp_ws-12" /> <EXTENSION type="Extract" > <EXTRACTPARAMS> <OUTPUTFILE file="paises" /> </EXTRACTPARAMS> </EXTENSION> Paso 2: Editar el archivo ArcIMSparam.js en el directorio del visor HTML que se quiere utilizar para este ejercicio y cambiar la variable var useExtract=true;. Paso 3: Editar el archivo aimsCustom.js en la carpeta javascript del visor HTML y crear dos nuevas variables globales:
BGR - PN 1999.2103.2
Pgina 77 de 83
mayo de 2005
Paso 4: Modificar la funcin useCustomFunction(theReply) en aimsCustom.js de la siguiente manera: function useCustomFunction(theReply) { if (XMLMode==1001) { // Insert code here. } else if (XMLMode==1111) { parseExtractResponse(theReply); } else { alert(msgList[55] + XMLMode + msgList[56]); } hideLayer("LoadData"); }
Modificar la funcin extractIt() de la siguiente manera: // Extract layers to download. function extractIt() { hideLayer("measureBox"); //alert(msgList[51]); if (checkIfActiveLayerAvailable()) { sendExtractRequest(); } } Aadir las siguientes lneas de cdigo al final del archivo aimsCustom.js: function sendExtractRequest(){ var extractAXL=""; //extractAXL += '<?xml version="1.0" encoding="UTF-8"?>\n'; extractAXL += '<ARCXML version="1.1">\n'; extractAXL += '<REQUEST>\n'; extractAXL += ' <GET_EXTRACT>\n'; extractAXL += ' <PROPERTIES>\n'; extractAXL += ' <ENVELOPE minx="' + forceComma(eLeft) + '" miny="' + forceComma(eBottom) + '" maxx="' + forceComma(eRight) + '" maxy="' + forceComma(eTop) + '" />\n'; extractAXL += ' <LAYERLIST>\n'; extractAXL += ' <LAYERDEF id="' + ActiveLayer + '" visible="true" />\n'; extractAXL += ' </LAYERLIST>\n'; extractAXL += ' </PROPERTIES>\n'; extractAXL += ' </GET_EXTRACT>\n'; extractAXL += '</REQUEST>\n'; extractAXL += '</ARCXML>\n';
BGR - PN 1999.2103.2
Pgina 78 de 83
mayo de 2005
sendToServer(imsExtractURL, extractAXL ,extractXMLMode); } function parseExtractResponse(theResponse){ var extractURL = getURL(theResponse); //alert(extractURL); if(extractURL!="") var Win1 = open(extractURL); }
BGR - PN 1999.2103.2
Pgina 79 de 83
mayo de 2005
Ejemplo: Implementar una funcin que seleccione un elemento y que posteriormente aumente el Zoom a la extensin del elemento seleccionado.
Paso 1: Editar el archivo ArcIMSparam.js en el directorio del visor HTML que se quiere utilizar para este ejercicio y agregar una variable var useZoomSelect=true;.
Paso 2: Crear dos iconos GIF para el nuevo botn y modificar el cdigo en toolbar.htm para agregar el botn a la barra de herramientas. function revertToolPic() {//selecciona gif de botn deseleccionado // reset tool icons to non-set mode //alert(lastMode); if (parent.MapFrame.useZoomIn) document.zoomin.src="images/zoomin_1.gif"; . //Ejemplo Curso //nuevo botn deseleccionado para zoomToSelected if (parent.MapFrame.useZoomSelect) document.zoomselect.src="images/zoomselect_1.gif"; .
BGR - PN 1999.2103.2
Pgina 80 de 83
mayo de 2005
function setToolPic(functName) {//selecciona gif de botn seleccionado // set clicked button icon to set mode //if (functName!=parent.MapFrame.modeName) { revertToolPic(); parent.MapFrame.focus(); //alert(functName); if (functName=="Zoom In") { document.zoomin.src="images/zoomin_2.gif"; } else if (functName=="Zoom Out") { . //Ejemplo curso // } else if (functName=="Zoom Select") { document.zoomselect.src="images/zoomselect_2.gif"; } .
//Generacin de la barra en tabla con botones <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2"> . if (parent.MapFrame.useZoomIn) { // Zoom In . . . requires aimsNavigation.js document.write('<td align="center" valign="middle">'); document.write('<img src="images/zoomin_1.gif" width=24 height=24 hspace=1 vspace=0 border=0 alt=" ' + t.buttonList[16] + '" name="zoomin" onmousedown="parent.MapFrame.clickFunction(\'zoomin\'); setToolPic(\'Zoom In\');" onmouseover="window.status=\' ' + t.buttonList[16] + '\'">'); isSecond = !isSecond; document.writeln('</td>'); //if (isSecond) document.write('</tr><tr>');
} . //Ejemplo curso // if (parent.MapFrame.useZoomSelect) { // Select y Zoom document.write('<td align="center" valign="middle">'); document.write('<img src="images/zoomselect_1.gif" width=24 height=24 hspace=1 vspace=1 border=0 alt=" ' + t.buttonList[60] + '" name="zoomselect" onmousedown="parent.MapFrame.clickFunction(\'zoomselect\'); setToolPic(\'Zoom Select\');" onmouseover="window.status=\' ' + t.buttonList[60] + '\'">');
BGR - PN 1999.2103.2
Pgina 81 de 83
mayo de 2005
Paso 3: Incluir un bloque de cdigo para el botn creado en la funcin clickfunction() del archivo aimsclick.js. function clickFunction (toolName) { if (hasLayer("measureBox")) hideLayer("measureBox"); switch(toolName) { // Zooming functions case "zoomin": // zoom in mode toolMode = 1; panning=false; selectBox=false; setCursor("theTop", "crosshair"); modeBlurb = modeList[0]; break; . //Ejemplo curso // case "zoomselect": // zoom out mode toolMode = 1112; panning=false; selectBox=false; setCursor("theTop", "hand"); modeBlurb = modeList[60]; break; . Paso 4: Programar bloques en de cdigo en las funciones las customMapTool(e) funciones y
useCustomFunction(theReply)
aimsCustom.js
utilizando
select(e),
displayAttributedata(theReply) y zoomToReturnedRecords() de la librera de JavaScript. function customMapTool(e) { if (toolMode == 1001) { // insert code here return false;
BGR - PN 1999.2103.2
Pgina 82 de 83
mayo de 2005
} if (toolMode == 1002) { // insert code here } if (toolMode == 1112) { // Ejemplo del curso //utiliza funciones existente para seleccionar un elemento if (checkIfActiveLayerAvailable()) { var tmpXMLMode = selectXMLMode; //select(e) utiliza selectXMLMode selectXMLMode = 1112; //as que hay que cambiarlo temporalmente select(e); selectXMLMode = tmpXMLMode; //para que ejecute useCustomFunction } }
function useCustomFunction(theReply) { if (XMLMode==1001) { // insert code here } else if (XMLMode==1002) { // insert code here // funcin que interpreta la respuesta de Extract } else if (XMLMode==1111) { parseExtractResponse(theReply); //Ejemplo del curso Select y Zoom que utiliza funcion displayAttributeData y //de las libreras del HTML Viewer zoomToReturnedRecords } else if (XMLMode==1112) { //alert('Ahora estoy en useCustomFunction'); //alert(theReply); displayAttributeData(theReply); //no llama a sendToserver // as que no hay problemas llamar a //sendtoserver aqu okToSend = true; zoomToReturnedRecords(); //!!!!!!requiere el campo #SHAPE# en //selFieldList de ArcIMSparam.js si //swapSelectFields=true!!!!!!! } else { alert(msgList[55] + XMLMode + msgList[56]); } hideLayer("LoadData"); }
BGR - PN 1999.2103.2
Pgina 83 de 83