ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Ayuda
  • Sign Out
ArcGIS Desktop

ArcGIS Online

La plataforma de representación cartográfica para tu organización

ArcGIS Desktop

Un completo SIG profesional

ArcGIS Enterprise

SIG en tu empresa

ArcGIS Developers

Herramientas para crear aplicaciones basadas en la ubicación

ArcGIS Solutions

Plantillas de aplicaciones y mapas gratuitas para tu sector

ArcGIS Marketplace

Obtén aplicaciones y datos para tu organización.

  • Documentación
  • Soporte
Esri
  • Iniciar sesión
user
  • Mi perfil
  • Cerrar sesión

ArcMap

  • Inicio
  • Introducción
  • Cartografiar
  • Analizar
  • Administrar datos
  • Herramientas
  • Extensiones

Consultas de la columna XML

  • Extraer varios valores de una columna XML

Existen varias columnas XML en las tablas del sistema de geodatabase GDB_Items y GDB_ItemRelationships que contienen información sobre el esquema de elementos y las relaciones de elementos. Especialmente la columna Definición de la tabla GDB_Items ofrece información detallada sobre una geodatabase. El tipo de documento XML que contiene la columna depende del tipo de elemento concreto. Por ejemplo, la definición de una clase de entidad contiene información sobre los campos de la tabla, los dominios y subtipos aplicados, la referencia espacial de la geometría y si la clase de entidad participa en un dataset de controlador.

Para trabajar con un valor de una columna XML en una tabla de sistema en IBM Db2, Microsoft SQL Server o PostgreSQL, recupere el documento XML completo de la base de datos y trabaje con él a nivel local en un visor de XML o de texto. Es posible que los desarrolladores que utilizan lenguajes como Java, C++ o C# prefieran leer el documento en un Modelo de objetos del documento (DOM). Los desarrolladores SQL pueden usar las funciones XML de la base de datos para recuperar valores específicos de definiciones de elementos mediante XPath (un lenguaje de consulta para documentos XML).

En geodatabases de Oracle y IBM Informix, las columnas XML usan XML de ArcSDE XML, que almacena información como BLOB en una serie de tablas separadas. Por ello, no se puede acceder a estas directamente con SQL.

Para poder ver el contenido de las columnas XML en las tablas del sistema en geodatabases de Oracle, existen dos vistas del sistema que almacenan el contenido a partir de las columnas XML de la tabla del sistema de geodatabase en un tipo de datos CLOB. GDB_Items_vw muestra el contenido de las columnas Definition, Documentation e ItemInfo de los CLOB de la tabla GDB_Items. GDB_ItemRelationships_vw muestra el contenido de la columna Attributes de la tabla GDB_ItemRelationships en un CLOB. Los CLOB se pueden leer como texto.

Nota:

Las firmas y el comportamiento de las funciones XML varían enormemente entre los sistemas de administración de la base de datos.

El siguiente ejemplo muestra la definición de elemento de la definición de un dominio de rango en un documento XML:

<? xml version = "1.0" encoding="utf-8"?>
<GPRangeDomain2
     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xs = "http://www.w3.org/2001/XMLSchema"
     xmlns:typens = "http://www.esri.com/schemas/ArcGIS/10.0"
     xsi:type = "typens:GPRangeDomain2">
  <DomainName>Angle</DomainName>
  <FieldType>esriFieldTypeInteger</FieldType>
  <MergePolicy>esriMPTDefaultValue</MergePolicy>
  <SplitPolicy>esriSPTDuplicate</SplitPolicy>
  <Description>Valid rotation angles</Description>
  <Owner>harley</Owner>
  <MaxValue xsi:type = "xs:int">359</MaxValue>
  <MinValue xsi:type = "xs:int">0</MinValue>
</GPRangeDomain2>

Los dos valores más importantes para un dominio de rango son los valores mínimo y máximo. Las expresiones XPath que representan estos elementos son /GPRangeDomain2/MinValue y /GPRangeDomain2/MaxValue, respectivamente. Esta consulta SQL muestra cómo extraer estos valores para un dominio de rango específico en una geodatabase de SQL Server:

--Queries an sde-schema geodatabase in SQL Server
SELECT
  Definition.value('(/GPRangeDomain2/MinValue)[1]','nvarchar(max)') AS "MinValue",
  Definition.value('(/GPRangeDomain2/MaxValue)[1]','nvarchar(max)') AS "MaxValue"
FROM
  sde.GDB_ITEMS INNER JOIN sde.GDB_ITEMTYPES
  ON sde.GDB_ITEMS.Type = sde.GDB_ITEMTYPES.UUID
WHERE
  sde.GDB_ITEMS.Name = 'Angle' AND
  sde.GDB_ITEMTYPES.Name = 'Range Domain'
MinValue   MaxValue
      0         359

El siguiente ejemplo es relativamente simple. Para las soluciones más complejas, consulte el documento Esquema XML de la geodatabase, especialmente el apéndice orientado a los desarrolladores que trabajan con las tablas del sistema.

Es posible consultar el resto de columnas XML en las tablas del sistema del mismo modo que la columna Definición de la tabla GDB_Items, pero tenga en cuenta que no hay un esquema XML definido por la geodatabase para la columna Documentación. La columna Documentación almacena los metadatos asociados con los elementos de la geodatabase. No obstante, el conjunto exacto de elementos de metadatos que contiene varía entre las organizaciones según el estándar de metadatos que sigan y su flujo de trabajo para administrar la información. Se incluye un DTD XML que describe la estructura de los metadatos de ArcGIS, ArcGISmetadatav1.dtd, con ArcGIS Desktop en la subcarpeta \Metadata\Translator\Rules del directorio de instalación de ArcGIS.

Extraer varios valores de una columna XML

Hay muchos casos en los que resulta útil extraer varios valores de un único documento XML. Como ejemplo, el siguiente es el valor Definition, un dominio de valor codificado.

<? xml version = "1.0" encoding="utf-8"?>
<GPCodedValueDomain2
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xs = "http://www.w3.org/2001/XMLSchema"
    xmlns:typens = "http://www.esri.com/schemas/ArcGIS/10.0"
  <DomainName>Material</DomainName>
  <FieldType>esriFieldTypeString</FieldType>
  <MergePolicy>esriMPTDefaultValue</MergePolicy>
  <SplitPolicy>esriSPTDuplicate</SplitPolicy>
  <Description>Valid pipe materials</Description>
  <Owner>aelflad</Owner>
  <CodedValues xsi:type= "typens:ArrayOfCodedValue">
   <CodedValue  xsi:type= "typens:CodedValue">
     <Name>Cast iron</Name>
     <Code xsi:type= "xs:string">CI</Code>
   </CodedValue>
   <CodedValue  xsi:type= "typens:CodedValue">
     <Name>Ductile iron</Name>
     <Code xsi:type= "xs:string">DI</Code>
   </CodedValue>
   <CodedValue  xsi:type= "typens:CodedValue">
     <Name>PVC</Name>
     <Code xsi:type= "xs:string">PVC</Code>
   </CodedValue>
   <CodedValue  xsi:type= "typens:CodedValue">
     <Name>Asbestos concrete</Name>
     <Code xsi:type= "xs:string">AC</Code>
   </CodedValue>
   <CodedValue  xsi:type= "typens:CodedValue">
     <Name>Copper</Name>
     <Code xsi:type= "xs:string">COP</Code>
   </CodedValue>
  </CodedValues>
</GPCodedValueDomain2>

Los valores que suelen ser de mayor interés para desarrolladores y administradores son los pares de código y valor, que tienen una expresión XPath de /GPCodedValueDomain2/CodedValues/CodedValue. El siguiente ejemplo muestra cómo extraer varios valores de una única definición XML para obtener los pares de código y valor para todos los dominios en una geodatabase de SQL Server:

-- Get the code/value pairs for each coded value domain in the geodatabase.
SELECT
   codedValue.value('Code[1]', 'nvarchar(max)') AS "Code",
   codedValue.value('Name[1]', 'nvarchar(max)') AS "Value"
FROM
   dbo.GDB_ITEMS AS items INNER JOIN dbo.GDB_ITEMTYPES AS itemtypes
   ON items.Type = itemtypes.UUID
CROSS APPLY
   items.Definition.nodes
    ('/GPCodedValueDomain2/CodedValues/CodedValue') AS CodedValues(codedValue)
WHERE
   itemtypes.Name = 'Coded Value Domain' AND
   items.Name = 'Material'
Code    Value
CI      Cast iron
DI      Ductile iron
PVC     PVC
AC      Asbestos concrete
COP     Copper

ArcGIS Desktop

  • Inicio
  • Documentación
  • Soporte

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

Acerca de Esri

  • Quiénes somos
  • Empleo
  • Blog de Esri
  • Conferencia de usuarios
  • Cumbre de desarrolladores
Esri
Díganos su opinión.
Copyright © 2021 Esri. | Privacidad | Legal