Clientes de CSW para ArcGIS
Descargar: Consulte el sitio del Geoportal Server CSW Client GitHub para descargar la versión más reciente del cliente CSW.
Los Clientes de CSW proporcionan la funcionalidad de descubrimiento del Geoportal a sus aplicaciones ArcMap y ArcGIS Explorer. Estas habilitan la búsqueda de catálogo Servicio de catálogos de OGC para la web (CS-W) directamente a través de ArcMap y ArcGIS Explorer. Una vez se devuelven los recursos, estos se pueden ver o descargar. Adicionalmente, si los recursos son servicios en directo, estos se pueden agregar al documento ArcMap o ArcGIS Explorer Globe. En ArcMap, hay funcionalidades adicionales que permiten que los usuarios obtengan una vista previa de la extensión espacial del recurso. Para obtener más información sobre cómo usa CS-W el Geoportal, consulte Servicio de catálogos del Geoportal. En la sección que aparece a continuación puede encontrar información sobre la instalación, uso y personalización de los Clientes de CSW.
Nota:
El cliente de CSW para ArcGIS Explorer es compatible con las versiones 1200, 1500 y 1700 de ArcGIS Explorer.
- Instalar los clientes de CSW para ArcGIS
- Usar los Clientes de CSW para ArcGIS
- Cómo funcionan los Clientes de CSW
- Cómo configurar catálogos adicionales
- Cómo crear y agregar un nuevo perfil
Instalar los Clientes de CSW para ArcGIS
Pasos para instalar
Precaución:
Si ha instalado el cliente CSW en el mismo equipo anteriormente y va a actualizarlo, asegúrese de desinstalar la versión anterior (Windows > Agregar/Quitar programas. Si usó el Cliente de CSW en ArcGIS Explorer, deberá eliminar el archivo CSWSearchDockWindow.eaz de su directorio \\Application Data\ESRI\ArcGIS Explorer\AddIns y también deberá eliminar la carpeta Caché de ese mismo directorio. Si no los elimina, su Cliente de CSW hará referencia a la versión anterior del add-in del Cliente de CSW de ArcGIS Explorer.
- Descargue la versión más reciente del cliente CSW en el sitio del Geoportal Server CSW Client GitHub.
- Ejecute setup.exe para los Clientes de CSW.
- Siga las instrucciones en el asistente de configuración. El instalador le dará la opción de una instalación completa o personalizada. Una instalación personalizada le permite elegir si desea instalar los Clientes de CSW para ArcMap y ArcGIS Explorer o solamente para uno de los dos.
- Durante la instalación, el instalador verifica la presencia del ArcGIS .NET framework. Si no encuentra el .NET Framework, no se instalará el Cliente de CSW para ArcGIS Desktop. Sin embargo, la instalación continuará para el Cliente de CSW para ArcGIS Explorer y aparecerá un cuadro de diálogo que le notificará sobre el estado de la instalación.
Agregue el Cliente de CSW a ArcMap
- Inicie ArcGIS Desktop. El Cliente de CSW se usa con el componente ArcMap de ArcGIS Desktop.
- Haga clic en Personalizar, > Personalizar modo. Aparece la ventana Personalizar.
- Haga clic en la pestaña Comandos de la ventana Personalizar.
- Desplácese hacia abajo a través de la lista de comandos y seleccione Geoportal. El icono del cliente de CSW aparecerá en la ventana Comandos, a la derecha.
- Arrastre el icono del Cliente de CSW a cualquier espacio en blanco en la barra de herramientas en ArcMap que desee.
- Cierre la ventana Personalizar.
Agregue el Cliente de CSW a ArcGIS Explorer
- Abra la aplicación ArcGIS Explorer.
- En la parte superior de la aplicación, haga clic en el botón ArcGIS Explorer en la esquina superior izquierda. Se muestra un menú.
- Haga clic en el botón Opciones de ArcGIS Explorer. Aparece la ventana Opciones ArcGIS Explorer.
- Haga clic en Recursos del menú a la izquierda. La pantalla a la derecha se llena con varios grados. Haga clic en el botón Add-Ins a la derecha del grado Administrar Add-Ins.
- Se abre otra ventana en la que puede ver y administrar Add-Ins. Haga clic en el botón Agregar a la derecha de la ventana y examine el archivo de Clientes de CSW con el nombre CSWSearchDockWindow.eaz. La ubicación de instalación predeterminada para este archivo es C:\Program Files\ESRI\Geoportal\CSWClients .
- Haga clic en Abrir para cargar el add-in CSWSearchDockWindow.eaz.
- Cuando cierre el cuadro de diálogo Add-in, es posible que se le pida que reinicie la aplicación ArcGIS Explorer. Después de que ésta se reinicia, el Cliente de CSW siempre estará disponible de manera predeterminada a menos que elija eliminarlo de la lista de Add-In.
- Obtenga acceso al Cliente de CSW haciendo clic en la pestaña Add-In en la parte superior de la aplicación ArcGIS Explorer.
El Cliente de CSW ahora está listo para usarlo. Lea la siguiente sección para saber cómo usar el cliente de CSW, y consulte El archivo CswClient.log para los clientes de CSW para obtener información sobre el registro.
Usar los Clientes de CSW para ArcGIS
Los Clientes de CSW se usan de la misma manera en ArcMap y ArcGIS Explorer. A continuación se describe cómo hacer la búsqueda de un catálogo de recursos, la vista de metadatos, descargar metadatos y agregar un recurso al mapa. En ArcMap, haga clic en el botón del cliente de CSW para abrir la herramienta. En ArcGIS Explorer, seleccione la pestaña Add-Ins y seleccione Cliente de CSW para abrir la tarea.
Búsqueda de un catálogo
Para realizar una búsqueda:
- Haga clic en la pestaña Buscar.
- Escriba un término en el cuadro de texto Buscar.
Nota:
Si no especifica ningún criterio de búsqueda, el número máximo de resultados que puede obtener es 100. Si intenta obtener más de 100, recibirá el mensaje "no se encontraron resultados".
- Elija uno de los servicios del catálogo del menú desplegable En el catálogo. Para configurar catálogos adicionales vea Configuración de perfiles y catálogos adicionales.
- Introduzca parámetros para refinar adicionalmente su búsqueda (opcional). ‎Los parámetros de búsqueda se describen a continuación.
- Solamente Datos y mapas en vivo: la búsqueda se puede limitar a los recursos de servicio en vivo si se marca la casilla Solamente Datos y mapas en vivo. Los servicios en directo se pueden agregar al documento de ArcMap o ArcGIS Explorer como una capa.
Nota:
Si no ha introducido un término de búsqueda pero marca la casilla Solamente mapas y datos en directo, es posible recuperar más de 100 registros ya que la consulta de búsqueda entonces se llena con un parámetro de búsqueda, tipo contenido = servicio en directo.
- Máximo: para limitar la cantidad de registros devueltos en los resultados de la búsqueda, cambie el valor del cuadro Máximo. El límite es 500 cuando se introducen parámetros de búsqueda y 100 para una búsqueda sin parámetros.
- Usar extensión actual (solamente ArcMap): si ya hay una extensión definida en la ventana del documento de ArcMap, se puede activar esta casilla y el cliente de CSW solamente recuperará los resultados que se encuentren en la extensión definida. Algunas URL de servicio de CSW no habilitan solicitudes de extensión, así que esto podría afectar la cantidad de resultados devueltos.
- Solamente Datos y mapas en vivo: la búsqueda se puede limitar a los recursos de servicio en vivo si se marca la casilla Solamente Datos y mapas en vivo. Los servicios en directo se pueden agregar al documento de ArcMap o ArcGIS Explorer como una capa.
- Haga clic en el botón Encontrar para ejecutar la búsqueda. Los resultados se presentan en la ventana Resultados. Para cada recurso de resultado devuelto, en la ventana Resumen visualizará la información resumida para el recurso seleccionado si se proporciona información resumida de sus metadatos.
Usar los resultados de la búsqueda
Observe las herramientas ubicadas encima de la ventana Resultados . Hay siete botones que se visualizan, representando la funcionalidad relacionada con los resultados de la búsqueda. La funcionalidad asociada con cada botón se describe a continuación.
- La herramienta Ver metadatos abre el documento de metadatos del recurso como un archivo XML en una ventana nueva.
- La herramienta Descargar metadatos permite descargar y guardar el archivo XML de metadatos del recurso.
- La herramienta Agregar al mapa agrega el servicio descrito por el recurso al mapa o globo como una capa nueva. Este botón estará atenuado a menos que el recurso tenga un tipo de contenido de "Mapas y datos en directo". Si hace clic en el botón Agregar al mapa y no se agregan datos al mapa, es posible que los metadatos del recurso no incluyan información de servicio. Para visualizar el servicio en directo, se debe proporcionar información de conexión en el xml de metadatos para ese recurso.
- Los siguientes cuatro botones se relacionan con la visualización de la huella espacial del recurso en la ventana del mapa actual. La extensión que se muestra en la huella corresponde al cuadro de límite definido en los metadatos del recurso.
- La herramienta Visualizar huella mostrará la extensión del recurso seleccionado superpuesta en el documento de mapa.
- La herramienta Acercar a huella acerca la extensión del recurso seleccionado. Esto es especialmente útil si la extensión es una pequeña región o el mapa base usa una proyección diferente.
- La herramienta Mostrar todas las huellas agrega todas las huellas de la ventana Resultados al mapa de una vez. Para ocultarlas, haga clic en el mismo botón de nuevo.
- La herramienta Borrar todas las huellas elimina todas las huellas que se hayan agregado al mapa.
Cómo funcionan los Clientes de CSW
Los Clientes de CSW necesitan tres piezas de información para recuperar los registros de un servicio de catálogos para visualizarlos en ArcMap o ArcGIS Explorer.
- Una URL GetCapabilities al catálogo: se trata de entradas en el campo URL del servicio de catálogos en la pestaña Configurar de los clientes de CSW. La URL GetCapabilities proporciona el extremo del catálogo para los cuales los Clientes de CSW envían la solicitud de búsqueda y desde donde recibe la respuesta.
- Criterios de búsqueda: se introducen en los campos de la pestaña Buscar de los clientes de CSW. El criterio de búsqueda define qué recursos devuelven los Clientes de CSW. El criterio de búsqueda actúa como filtros, como cuando se filtra por medio de un término de búsqueda, si los datos deben ser solamente Datos en directo y el número máximo de los resultados de búsqueda devueltos.
- Un perfil de catálogo: el perfil del servicio de catálogos se selecciona desde un menú desplegable de la pestaña Configurar de los clientes de CSW. La designación del perfil del catálogo indica a los Clientes de CSW qué perfil utiliza el servicio de catálogos. La asignación entre el servicio de catálogos y su perfil se define en un archivo denominado CSWCatalogs.xml. El archivo se actualiza cada vez que se configura un catálogo nuevo con la pestaña Configurar de los clientes de CSW. Los Clientes de CSW hacen referencia a CSWCatalogs.xml para descubrir qué perfil usa el catálogo. La lista de perfiles disponibles se define en otro archivo, CSWProfiles.xml. Este perfil indicará los archivos xslt que se usarán para formular las solicitudes entre los clientes de CSW y el catálogo.
<?xml version="1.0" encoding="utf-8" ?> <CSWProfiles> <!-- OGCCORE ESRI GPT --> <Profile> <ID>urn:ogc:CSW:2.0.2:HTTP:OGCCORE:ESRI:GPT</ID> <Name>ArcGIS Server Geoportal</Name> <CswNamespace>http://www.opengis.net/cat/csw/2.0.2</CswNamespace> <Description /> <GetRecords> <XSLTransformations> <Request>CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Request.xslt</Request> <Response>CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt</Response> </XSLTransformations> </GetRecords> <GetRecordByID> <RequestKVPs> <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full]]> </RequestKVPs> <XSLTransformations> <Response>CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecordByID_Response.xslt</Response> </XSLTransformations> </GetRecordByID> <SupportSpatialQuery>True</SupportSpatialQuery> <SupportContentTypeQuery>True</SupportContentTypeQuery> <SupportSpatialBoundary>True</SupportSpatialBoundary> </Profile>
Flujo de información usando los xslt
Conceptualmente, hay tres espacios de interacción al usar los clientes de CSW: la interfaz de usuario (IU) de los clientes de CSW, la actividad de traducción de los clientes de CSW y el servicio de catálogos con el que interactúan los clientes de CSW. Las interacciones se llevan a cabo cuando el usuario inicia una búsqueda mediante los Clientes de CSW y cuando inicia la comunicación con el servicio de catálogos mediante los botones Vista de metadatos, Descargar metadatos, Agregar al mapa y Vista de huella de los clientes de CSW. Los tres diagramas a continuación muestran la manera en que la UI, la actividad de traducción de los Clientes de CSW y el servicio de catálogos interactúan para llevar a cabo y visualizar la información de metadatos en ArcMap o ArcGIS Explorer.
- Solicitud inicial a un servicio
El flujo de comunicación inicial para la solicitud y respuesta de CS-W se muestra en el siguiente diagrama, junto con una explicación de los pasos numerados.
- Cuando un usuario hace clic en el botón Buscar para los Clientes de CSW, los Clientes de CSW hacen referencia al archivo CSWCatalogs.xml para encontrar el perfil correspondiente para ese servicio de catálogos. El perfil correspondiente determina cuáles archivos GetRecordsRequest, GetRecordsResponse y GetRecordByID_Response se usarán. Luego, los Clientes de CSW crean un xml genérico. El xml genérico se ve así:
<csw:GetRecords version="2.0.2" service="CSW" resultType="RESULTS" startPosition="1" maxRecords="10" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"> <csw:Query typeNames="csw:Record" xmlns:ogc="http://www.opengis.net/ogc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:gml="http://www.opengis.net/gml"> <csw:ElementSetName>full</csw:ElementSetName> <csw:Constraint version="1.0.0"> <ogc:Filter xmlns="http://www.opengis.net/ogc"> <ogc:And> <ogc:PropertyIsLike wildCard="" escape="" singleChar=""> <ogc:PropertyName>AnyText</ogc:PropertyName> <ogc:Literal>wms</ogc:Literal> </ogc:PropertyIsLike> <ogc:PropertyIsEqualTo> <ogc:PropertyName>Format</ogc:PropertyName> <ogc:Literal>liveData</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:And> </ogc:Filter> </csw:Constraint> </csw:Query> </csw:GetRecords>
Observe cuidadosamente qué información se está transfiriendo en este fragmento de código. Cada bit de información corresponde a lo que se introducen en la UI de los Clientes de CSW. En el elemento GetRecords, hay un atributo que indica cuántos registros se recuperarán - maxRecords y en este ejemplo se devolverán diez registros. Hay un elemento que define el término de búsqueda que se introduce - PropertyName AnyText y en este ejemplo el término de búsqueda es 'wms'. Entonces hay un parámetro para recuperar el tipo de contenido del documento, si está disponible - formato PropertyName y en este ejemplo, los registros a recuperar deben estar en Datos en directo (la casilla de verificación Solamente mapas y datos en directo en la UI).Nota:
Puede haber parámetros adicionales en este xml genérico para la extensión espacial, categoría de tema ISO y fecha de modificación. Los parámetros para el tema de ISO y la fecha de modificación son para usarlos dentro de la aplicación web del geoportal nada más y no se deben especificar para usarlos con los Clientes de CSW.
- Los Clientes de CSW interpretan el XML genérico y aplican una transformación de acuerdo con GetRecords_Request.xslt que traduce el XML en un GetRecordsRequest de CS-W de manera que el servicio de catálogos pueda interpretar el criterio de búsqueda.
- El xml transformado se pasa como una GetRecordsRequest al servicio de catálogos.
- El servicio de catálogos responde con una lista de registros que coincide con el criterio de búsqueda, formateado en sintaxis de CS-W.
- El Cliente de CSW aplica el GetRecords_Response.xslt para traducir la respuesta del servicio de catálogos en registros resultantes para que los visualice a través de la interfaz del Cliente de CSW. Resumen, información de la huella para los botones de huella y si los registros son Datos en directo también se devuelven para cada registro.
- Cuando un usuario hace clic en el botón Buscar para los Clientes de CSW, los Clientes de CSW hacen referencia al archivo CSWCatalogs.xml para encontrar el perfil correspondiente para ese servicio de catálogos. El perfil correspondiente determina cuáles archivos GetRecordsRequest, GetRecordsResponse y GetRecordByID_Response se usarán. Luego, los Clientes de CSW crean un xml genérico. El xml genérico se ve así:
Botones Vista de metadatos y Descargar metadatosLos clientes de CSW no necesitan aplicar hojas de estilo con los botones Vista de metadatos y Descargar datos para interpretar las entradas del usuario o visualizar la respuesta del servicio de catálogos. En lugar de eso, los Clientes de CSW usan las solicitudes y respuestas de GetRecordById nativa del servicio de catálogos para recuperar los metadatos. Este flujo de comunicación se muestra en el siguiente diagrama y a continuación se encuentra una explicación de los pasos numerados.
- Cuando un usuario hace clic en los botones Vista de metadatos o Descargar metadatos, los Clientes de CSW solicitan el documento de metadatos completo para el registro con la solicitud GetRecordById innata del servicio de catálogos definida en su GetCapabilities.
- El servicio de catálogos responde con una respuesta GetRecordById y los metadatos completos se devuelven a la interfaz de usuario.
Botón Agregar al mapaSe activa una transformación más, denominada GetRecordByID_Response.xslt, cuando el usuario hace clic en el botón Agregar al mapa. El flujo de comunicación se muestra en el siguiente diagrama y a continuación se encuentra una explicación de los pasos numerados.
- Cuando un usuario hace clic en el botón Agregar al mapa o Agregar huellas, los Clientes de CSW recuperan la respuesta GetRecordByID del servicio de catálogos.
- Los Clientes de CSW entonces aplican el GetRecordByID_Response.xslt a la respuesta para extraer la URL que se usa para el servicio en directo.
- La URL entonces se envía a la interfaz de usuario para Agregar al mapa o la huella de los metadatos como se define por medio de la información del sobre en los metadatos.
Cómo configurar catálogos adicionales
De manera predeterminada, los Clientes de CSW están configurados previamente para buscar en Geospatial OneStop: el catálogo núcleo GOS2 OGC de la interfaz de búsqueda. Pero, si desea buscar un servicio de catálogos diferente que Geospatial OneStop, es posible al registrar el servicio de catálogos en la pestaña Configurar de los Clientes de CSW.
- Cómo registrar un servicio de catálogos para usar en los Clientes de CSW
- Empiece haciendo clic en la pestaña Configurar. En esta pestaña verá tres campos de entrada y tres botones. Introducirá información a estos campos que define la conexión al servicio de catálogos y proporcionará el nombre para el servicio en la interfaz de usuario.
- Haga clic en el botón Nuevo para borrar el formulario e introducir los datos de su nuevo servicio de catálogo.
- En el cuadro de entrada URL del servicio de catálogos, escriba la dirección URL de GetCapabilities del servicio que vaya a agregar. Si está registrando un servicio de catálogos geoportal 10, el formato de la URL será parecido al siguiente:
http://serverName/geoportal/csw/discovery?Request=GetCapabilities&Service=CSW&Version=2.0.2
- En la lista desplegable Perfil, especifique el perfil que utiliza el servicio de catálogos. Algunas veces es posible encontrar esta información al pegar la URL GetCapabilities URL en un navegador web y leer la respuesta resultante para encontrar pistas. Si no puede determinar el perfil al observar la respuesta GetCapabilities, es posible que tenga que comunicarse con la organización host del servicio de catálogos y preguntar sobre el perfil. Si está registrando un servicio de catálogos 10 del geoportal, el perfil será el perfil del geoportal de ArcGIS Server. Si el servicio de catálogos usa un perfil que no está en la lista desplegable predeterminada, puede agregar el perfil. Vea Cómo crear y agregar un nuevo perfil para obtener instrucciones.
- Proporcione un nombre de visualización para el servicio de catálogos al escribir un nombre en el campo Nombre de visualización.
- Haga clic en el botón Guardar para agregar el catálogo nuevo a la lista de catálogos.
- Ahora, active la pestaña Buscar. Su recién registrado servicio de catálogos deberá aparecer en la lista desplegable En el catálogo.
- Cómo actualizar un servicio de catálogos existente de la lista
- Haga clic en la pestaña Configurar.
- Resalte el servicio de catálogos que se actualizará en la lista Catálogos. La URL del servicio de catálogos, el perfil y el nombre de visualización se cargarán en la interfaz.
- Haga sus cambios a estos campos.
- Haga clic en el botón Guardar.
- Cómo eliminar un servicio de catálogos existente de la lista
- Haga clic en la pestaña Configurar.
- Resalte el servicio de catálogos que desea eliminar de la lista de catálogos registrada.
- Haga clic en el botónEliminar.
- El sistema mostrará un cuadro de diálogo de confirmación. Haga clic en Sí para confirmar la eliminación.
Cómo crear y agregar un nuevo perfil
Si desea registrar un servicio de catálogos que no utiliza uno de los perfiles que los Clientes de CSW de manera predeterminada, entonces deberá crear los tres xslt para recuperar los resultados de la búsqueda y extraer la URL utilizada para agregar datos en directo al mapa. Se hace referencia a estos tres archivos en la sección Cómo funcionan los clientes de CSW. Después de crear estos tres archivos xslt, debe hacer referencia a los mismos con una nueva entrada del perfil en el archivo CSWProfiles.xml. La sección a continuación proporciona detalles acerca de cómo crear cada xslt y luego cómo agregar la referencia al archivo CSWProfiles.xml.
- Creación de GetRecords_Request.xslt
Recuerde que los Clientes de CSW aplican una transformación que traduce el XML genérico de la interfaz de usuario de los Clientes de CSW en CS-W GetRecordsRequest que el servicio de catálogos puede interpretar. El fragmento de código a continuación muestra un GetRecords_Request.xslt genérico con anotación en las secciones comentadas que describen los detalles de partes importantes del archivo. Copie este texto en un editor de texto como Notepad y haga los ajustes que se describen en los comentarios.
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="no" encoding="UTF-8" omit-xml-declaration="yes"/> <xsl:template match="/"> <xsl:element name="csw:GetRecords" use-attribute-sets="GetRecordsAttributes" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:ogc="http://www.opengis.net/ogc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:gml="http://www.opengis.net/gml"> <csw:Query typeNames="csw:Record"> <csw:ElementSetName>full</csw:ElementSetName> <csw:Constraint version="1.0.0"> <ogc:Filter xmlns="http://www.opengis.net/ogc"> <ogc:And> <!-- El cliente de CSW debe recuperar la siguiente información para definir la búsqueda que el usuario especifique en la interfaz de usuario: 'KeyWord' corresponde al término de búsqueda que introduce el usuario, 'LiveDataMap' equivale a si el usuario marca la opción "Solamente Datos y mapas en vivo", y 'Envelope' especifica el cuadro de delimitación de una búsqueda en función de la extensión actual de la ventana de ArcMap. El valor de 'tmpltDate' indica que se va a buscar en un catálogo a través del Geoportal, en la página Opciones adicionales, búsqueda por Fecha de modificación de la página de búsqueda. --> <!-- Búsqueda de palabras clave --> <xsl:apply-templates select="/GetRecords/KeyWord"/> <!-- Búsqueda de datos o mapas en vivo --> <xsl:apply-templates select="/GetRecords/LiveDataMap"/> <!-- Búsqueda de delimitación, p. ej., ogc:BBOX --> <xsl:apply-templates select="/GetRecords/Envelope"/> <!-- Búsqueda de rango de datos --> <xsl:call-template name="tmpltDate"/> </ogc:And> </ogc:Filter> </csw:Constraint> </csw:Query> </xsl:element> </xsl:template> <!-- Búsqueda de palabras clave: esta plantilla sirve para pasar el término de búsqueda al servicio de catálogos. El PropertyName 'AnyText' puede variar, dependiendo de lo que acepte su servicio de catálogos. 'AnyText' buscará en todos los campos, con independencia del elemento XML del que se trate. Si desea solo buscar el título o el resumen, cambie el parámetro PropertyName según corresponda. Los elementos 'PropertyIsLike' (wildCard="" escape= "" singleChar="") son propios de la especificación de CSW que siga su servicio de catálogos. --> <xsl:template match="/GetRecords/KeyWord" xmlns:ogc="http://www.opengis.net/ogc"> <xsl:if test="normalize-space(.)!=''"> <ogc:PropertyIsLike wildCard="" escape="" singleChar=""> <ogc:PropertyName>AnyText</ogc:PropertyName> <ogc:Literal> <xsl:value-of select="."/> </ogc:Literal> </ogc:PropertyIsLike> </xsl:if> </xsl:template> <!-- Búsqueda de datos o mapas en vivo: esta plantilla sirve para pasar la condición de que se recuperen solo registros de datos o de mapas en vivo del catálogo de servicios. El parámetro PropertyName 'Format' depende del parámetro que acepte su servicio de catálogos para definir el tipo de recurso que describe el registro resultante. El elemento literal "liveData" se puede cambiar para indicar el término que usa su servicio para recuperar registros de datos en vivo.--> <xsl:template match="/GetRecords/LiveDataMap" xmlns:ogc="http://www.opengis.net/ogc"> <xsl:if test="translate(normalize-space(./text()),'true', 'TRUE') ='TRUE'"> <ogc:PropertyIsEqualTo> <ogc:PropertyName>Format</ogc:PropertyName> <ogc:Literal>liveData</ogc:Literal> </ogc:PropertyIsEqualTo> </xsl:if> </xsl:template> <!-- Búsqueda de delimitación: esta plantilla sirve para definir un cuadro de delimitación para los registros resultantes que devuelve el servicio de catálogos cuando la opción "Usar extensión actual" está seleccionada (solo en el cliente de CSW de ArcMap). Los registros obtenidos deben encontrarse en este cuadro de delimitación. No cambie los elementos PropertyName, Box ni coordinates.--> <xsl:template match="/GetRecords/Envelope" xmlns:ogc="http://www.opengis.net/ogc"> <!-- Generar consulta BBOX si se especifican minx, miny, maxx y maxy --> <xsl:if test="./MinX and ./MinY and ./MaxX and ./MaxY"> <ogc:BBOX xmlns:gml="http://www.opengis.net/gml"> <ogc:PropertyName>Geometry</ogc:PropertyName> <gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"> <gml:coordinates> <xsl:value-of select="MinX"/>,<xsl:value-of select="MinY"/>,<xsl:value-of select="MaxX"/>,<xsl:value-of select="MaxY"/> </gml:coordinates> </gml:Box> </ogc:BBOX> </xsl:if> </xsl:template> <!-- tmpltDate: esta plantilla sirve para definir el intervalo de datos cuando los registros finales obtenidos del servicio de catálogos se han modificado. Solo se usa para la búsqueda en el Geoportal, no en el cliente de CSW. Solo es necesario incluir esta sección si desea aplicar su perfil personalizado al Geoportal y al cliente de CSW (el perfil personalizado aparece en la lista desplegable de perfiles cuando un usuario con permisos para publicar registra un repositorio de CSW). No cambie esta sección.--> <xsl:template name="tmpltDate" xmlns:ogc="http://www.opengis.net/ogc"> <xsl:if test="string-length(normalize-space(/GetRecords/FromDate/text())) > 0"> <ogc:PropertyIsGreaterThanOrEqualTo> <ogc:PropertyName>Modified</ogc:PropertyName> <ogc:Literal><xsl:value-of select="normalize-space(/GetRecords/FromDate/text())"/> </ogc:Literal> </ogc:PropertyIsGreaterThanOrEqualTo> </xsl:if> <xsl:if test="string-length(normalize-space(/GetRecords/ToDate/text())) > 0"> <ogc:PropertyIsLessThanOrEqualTo> <ogc:PropertyName>Modified</ogc:PropertyName> <ogc:Literal><xsl:value-of select="normalize-space(/GetRecords/ToDate/text())"/></ogc:Literal> </ogc:PropertyIsLessThanOrEqualTo> </xsl:if> </xsl:template> <xsl:attribute-set name="GetRecordsAttributes"> <xsl:attribute name="version">2.0.2</xsl:attribute> <xsl:attribute name="service">CSW</xsl:attribute> <xsl:attribute name="resultType">RESULTS</xsl:attribute> <xsl:attribute name="startPosition"> <xsl:value-of select="/GetRecords/StartPosition"/> </xsl:attribute> <xsl:attribute name="maxRecords"> <xsl:value-of select="/GetRecords/MaxRecords"/> </xsl:attribute> </xsl:attribute-set> </xsl:stylesheet>
Cuando termine la edición del texto, guarde el archivo como 'GetRecords_Request.xslt'. - Creación de GetRecords_Response.xslt
Recuerde que los Clientes de CSW aplican una transformación que traduce la respuesta del servicio de catálogos al criterio de búsqueda presentado en los registros resultantes para que lo muestre la interfaz del cliente de CSW. El fragmento de código a continuación muestra un GetRecords_Response.xslt genérico con anotación en las secciones comentadas que describen los detalles de partes importantes del archivo. Copie este texto en un editor de texto y haga los ajustes que se describen en los comentarios. Observe que en donde se hace referencia a los elementos de metadatos específicos en enunciados seleccionados en este ejemplo, debe verificar el esquema de metadatos que su servicio de catálogos utiliza y que los elementos seleccionados cumplen con ese esquema. Por ejemplo, en el elemento <ID> a continuación, el ejemplo muestra que se selecciona el elemento dc:identifier. Esto es correcto si la respuesta del servicio de catálogos se basa en el Núcleo Dublín. En cambio, si la respuesta de su servicio de catálogos se basa en la norma ISO 19139, la instrucción "select" del elemento de <ID> se debe cambiar a gmd:fileIdentifier/gco:CharacterString.
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" xmlns:dc="http://purl.org/dc/elements/1.1/" exclude-result-prefixes="csw dc dct ows"> <xsl:output method="xml" indent="no" encoding="UTF-8" omit-xml-declaration="yes" /> <xsl:template match="/"> <xsl:choose> <!-- Si la respuesta de CSW devuelve alguna excepción, haga lo siguiente --> <xsl:when test="/ows:ExceptionReport"> <exception> <exceptionText> <xsl:for-each select="/ows:ExceptionReport/ows:Exception"> <xsl:value-of select="ows:ExceptionText"/> </xsl:for-each> </exceptionText> </exception> </xsl:when> <xsl:otherwise> <Records> <xsl:attribute name="maxRecords"> <xsl:value-of select="/csw:GetRecordsResponse/csw:SearchResults/@numberOfRecordsMatched"/> </xsl:attribute> <xsl:for-each select="/csw:GetRecordsResponse/csw:SearchResults/csw:Record | /csw:GetRecordsResponse/csw:SearchResults/csw:BriefRecord | /csw:GetRecordByIdResponse/csw:Record | /csw:GetRecordsResponse/csw:SearchResults/csw:SummaryRecord"> <Record> <ID> <xsl:choose> <xsl:when test="string-length(normalize-space(dc:identifier[@scheme='urn:x-esri:specification:ServiceType:ArcIMS:Metadata:DocID']/text())) > 0"> <xsl:value-of select="normalize-space(dc:identifier[@scheme='urn:x-esri:specification:ServiceType:ArcIMS:Metadata:DocID'])"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="normalize-space(dc:identifier)"/> </xsl:otherwise> </xsl:choose> </ID> <Title> <xsl:value-of select="dc:title"/> </Title> <Abstract> <xsl:value-of select="dct:abstract"/> </Abstract> <Type> <xsl:value-of select="dc:type"/> </Type><!--Cada perfil puede tener un tipo diferente de cuadro de delimitación. Algunos pueden tener dos; otros, cuatro. Este tiene cuatro --> <LowerCorner> <xsl:value-of select="ows:WGS84BoundingBox/ows:LowerCorner"/> </LowerCorner> <UpperCorner> <xsl:value-of select="ows:WGS84BoundingBox/ows:UpperCorner"/> </UpperCorner> <MaxX> <xsl:value-of select="normalize-space(substring-before(ows:WGS84BoundingBox/ows:UpperCorner, ' '))"/> </MaxX> <MaxY> <xsl:value-of select="normalize-space(substring-after(ows:WGS84BoundingBox/ows:UpperCorner, ' '))"/> </MaxY> <MinX> <xsl:value-of select="normalize-space(substring-before(ows:WGS84BoundingBox/ows:LowerCorner, ' '))"/> </MinX> <MinY> <xsl:value-of select="normalize-space(substring-after(ows:WGS84BoundingBox/ows:LowerCorner, ' '))"/> </MinY> <ModifiedDate> <xsl:value-of select="./dct:modified"/> </ModifiedDate> <!-- Se usa para extraer las URL del documento. Permite obtener las URL y el atributo de esquema (@scheme, que determina el tipo de URL (puede ser de miniatura, sitio web, servidor, contacto, etc). Al añadir al mapa, siempre elegimos la URL de "servidor". --> <References> <xsl:for-each select="./dct:references"> <xsl:value-of select="."/> <xsl:text>✔</xsl:text> <xsl:value-of select="@scheme"/> <xsl:text>✕</xsl:text> </xsl:for-each> </References> <!-- Esto permite extraer la información de tipo de contenido. Se puede usar para resaltar el botón Agregar al mapa--> <Types> <xsl:for-each select="./dc:type"> <xsl:value-of select="."/> <xsl:text>✔</xsl:text> <xsl:value-of select="@scheme"/> <xsl:text>✕</xsl:text> </xsl:for-each> </Types> </Record> </xsl:for-each> </Records> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
Cuando termine la edición del texto, guarde el archivo como 'GetRecords_Response.xslt'. - Creación de GetRecordByID_Response.xslt
Recuerde que los clientes de CSW aplican el GetRecordByID_Response.xslt a una respuesta GetRecordsByID del servicio de catálogos solamente para extraer la URL que se utiliza para visualizar un servicio en directo en la interfaz. El fragmento de código que consta a continuación muestra un GetRecordsByID_Response.xslt genérico. La parte importante de la personalización es identificar dónde se encuentra la información de respuesta de CS-W acerca de un servicio en vivo. Esto se debe definir en la sección <xsl:template> mediante instrucciones "select". El ejemplo que se muestra a continuación es para el servicio de catálogos del Núcleo Dublín y observamos que la XPath a la información del servicio se puede encontrar en el elemento csw:record/dct:references. Para los ejemplos que usan conectores CS-W de ArcIMS o conectores basados en ISO 19139, abra otros GetRecordByID_Response xslt dentro de la carpeta \\CSWClients\Data y busque un ejemplo que sea similar al estándar que su servicio de catálogos utiliza.
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" exclude-result-prefixes="csw dct"> <xsl:output method="text" indent="no" encoding="UTF-8"/> <xsl:template match="/"> <xsl:choose> <xsl:when test="/ows:ExceptionReport"> <exception> <exceptionText> <xsl:for-each select="/ows:ExceptionReport/ows:Exception"> <xsl:value-of select="ows:ExceptionText"/> </xsl:for-each> </exceptionText> </exception> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="//csw:Record/dct:references"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="//csw:Record/dct:references"> <xsl:value-of select="."/> <xsl:text>✔</xsl:text> <xsl:value-of select="@scheme"/> <xsl:text>✕</xsl:text> </xsl:template> </xsl:stylesheet>
Cuando termine la edición del texto, guarde el archivo como 'GetRecordsByID_Request.xslt'. - Agregue su perfil al archivo CSWProfiles.xml
Después de que haya creado los tres xslt, debe hacer referencia a los mismos en el archivo CSWProfiles.xml.
- Decida un prefijo que distinguirá sus xslt de los otros que se encuentran en el directorio \\CSWClients\Data. Cambie los nombres de sus tres xslt para incluir este prefijo. Por ejemplo, GetRecords_Request.xslt se convierte enMyOrganizationName_GetRecords_Request.xslt.
- Navegue a la carpeta \\CSWClients\Data y abra el archivo CSWProfiles.xml en un editor de texto.
- Copie el texto siguiente en una entrada en la parte superior del archivo, justo debajo de la etiqueta <CSWProfiles>. Actualice las secciones comentadas para hacer referencia al nombre de su nuevo perfil y los tres xslt que ha creado.
<?xml version="1.0" encoding="utf-8" ?> <CSWProfiles> <!-- Inserte aquí el nombre de su perfil dentro de los comentarios --> <Profile> <!-- Actualice el valor de ID con un valor de URN único. No importa qué valor le asigne, siempre que sea único en este archivo --> <ID>urn:ogc:CSW:2.0.2:HTTP:YourProfile </ID> <!-- Modifique el valor de Name al nombre que desee mostrar para su perfil en la lista desplegable Perfil de la pestaña Configurar de la interfaz de usuario del cliente CSW--> <Name> Nombre único para mostrar del perfil </Name> <!-- Cambie el valor de CswNamespace por el espacio de nombres de su servicio de CSW. En los servicios de CSW 2.0.2, esta dirección será: http://www.opengis.net/cat/csw/2.0.2. En versiones anteriores de los servicios de CSW, puede ser: http://www.opengis.net/cat/csw u otro espacio de nombres --> <CswNamespace> http://www.opengis.net/cat/csw/2.0.2 </CswNamespace> <Description /> <GetRecords> <XSLTransformations><!-- Cambiar por el nombre del archivo GetRecords_Request.xslt de su perfil personalizado--> <Request>MyOrganizationName_GetRecords_Request.xslt </Request><!-- Cambiar por el nombre del archivo GetRecords_Response.xslt de su perfil personalizado--><Response> MyOrganizationName_GetRecords_Response.xslt </Response> </XSLTransformations> </GetRecords> <GetRecordByID> <RequestKVPs> <!-- Cambiar por la sintaxis adecuada para emitir una solicitud GetRecordById al tipo de servicio de catálogos al que desee conectarse. En este ejemplo, el servicio usa el protocolo de CS-W 2.0.2 y todo el conjunto de elementos de registro de metadatos de cada registro de origen que se debe presentar en la respuesta (ElementSetName) --> <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full]]> </RequestKVPs> <XSLTransformations> <!-- Cambiar por el nombre del archivo GetRecordByID_Response.xslt de su perfil personalizado --> <Response>MyOrganizationName_GetRecordByID_Response.xslt </Response> </XSLTransformations> </GetRecordByID> <!-- Cambiar a True si el servicio de CS-W permite devolver consultas definidas por una extensión --> <SupportSpatialQuery>True </SupportSpatialQuery> <!-- Cambiar a True si el servicio de CS-W permite devolver el tipo de contenido de un registro de metadatos --> <SupportContentTypeQuery> True </SupportContentTypeQuery> <!-- Cambiar a True si el servicio de CS-W permite devolver la información del cuadro de delimitación --> <SupportSpatialBoundary> True </SupportSpatialBoundary> </Profile>
- De manera predeterminada, cuando un usuario hace clic en el botón Vista de metadatos, el XML de metadatos es devuelto de la respuesta GetRecordByID del servicio de catálogos sin ningún estilo aplicado. Si desea definir el estilo del documento de metadatos para que sea más fácil de leer, puede usar la etiqueta <StyleResponse> en lugar de la etiqueta <Response> dentro de la sección <GetRecordByID> para su perfil en el archivo CSWProfiles.xml. Realice lo siguiente:
- Cree una hoja de estilo (.xsl) que interpretará y representará los metadatos devueltos de la respuesta GetRecordById del servicio de catálogos. Guarde la hoja de estilo en la misma carpeta que su archivo CSWProfiles.xml.
- En el archivo CSWProfiles.xml, desplácese a la sección que define el perfil al cuál desea aplicar el estilo. Dentro de esa sección, busque el elemento <GetRecordByID>. Dentro del elemento <GetRecordByID>, busque el elemento <XSLTransformations>.
- Reemplace la sección del elemento <Response> con <StyleResponse>.
- Dentro de las etiquetas abiertas y cerradas <StyleResponse>, escriba el nombre de la hoja de estilo que creó para representar la respuesta de GetRecordByID. A continuación se muestra un ejemplo:
<GetRecordByID> <RequestKVPs> <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full&outputSchema=original]]> </RequestKVPs> <XSLTransformations> <StyleResponse>Custom_Render.xsl</StyleResponse> </XSLTransformations> </GetRecordByID>
- Guarde el archivo CSWProfiles.xml. La próxima vez que abra los clientes de CSW en ArcMap o ArcGIS Explorer, debe ver su perfil en la lista.