ArcGIS Desktop

  • Documentación
  • Soporte

  • 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 for 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 GDB_Items y GDB_ItemRelationships que contienen información sobre el esquema de elementos y las relaciones de elementos. La columna Definición de la tabla GDB_Items, es indispensable para obtener información detallada sobre una geodatabase. El tipo de documento XML que contiene depende del tipo de elemento específico; por ejemplo, la definición de una clase de entidad contiene información sobre los campos de la tabla, los dominios utilizados, los subtipos, la referencia espacial y la participación del dataset controlador, entre otros.

La forma más simple de trabajar con un valor de una columna XML es recuperar el documento completo de la base de datos y trabajar con él a nivel local. Un ejemplo sencillo de esto sería guardar el documento XML como un archivo y visualizarlo en un XML o visor 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). Para los desarrolladores SQL, las funciones XML de la base de datos se pueden utilizar para recuperar valores específicos de definiciones de elementos mediante XPath (un lenguaje de consultas para documentos XML).

Nota:

Die Signaturen und das Verhalten von XML-Funktionen sind je nach Datenbankmanagementsystem sehr unterschiedlich.

Ein einfaches Beispiel für eine Felddefinition ist eine Bereichsdomäne. Das unten dargestellte XML-Dokument ist eine typische Bereichsdomänendefinition:

<? 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>

En términos generales, 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:

--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

Dado un ejemplo simple como el anterior, resulta fácil encontrar las expresiones XPath de la información que desea obtener. Sin embargo, para las soluciones más complejas, consulte el documento Esquema XML de la geodatabase para definiciones XPath; especialmente el apéndice orientado a los desarrolladores que trabajan con las tablas del sistema.

Las otras columnas XML en las tablas del sistema se pueden consultar 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 basadas en los metadatos estándar que siguen y el flujo de trabajo para administrar la información. Se incluye una 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. El siguiente es el valor Definición para tal ejemplo, 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 en 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

Informationen zu den in Oracle verwendeten Systemtabellen und Sichten finden Sie im Abschnitt "XML in Geodatabase-Systemtabellen" in Kurzer Überblick über Geodatabase-Systemtabellen.

ArcGIS Desktop

  • Inicio
  • Documentación
  • Soporte

Plataforma ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • 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 © 2018 Esri. | Privacidad | Legal