¿Se refiere a NaN o ± ∞ (valores especiales de coma flotante) en las consultas de definición de ArcMap?


10

Por casualidad, descubrí cómo ArcMap muestra valores especiales de coma flotante para el usuario.

  • + ∞ (infinito positivo) se muestra como 1.#INF
  • –∞ (infinito negativo) supuestamente se mostraría como -1.#INF- No he verificado este.
  • NaN (no es un número) se muestra como alineado a la derecha <Null>, no debe confundirse con alineado a la izquierda <Null>, que denota NULL (valores faltantes):

    Captura de pantalla de una tabla vista en ArcMap que muestra dos tipos distintos de NULL

    (Por cierto, obtener valores únicos en la calculadora de campo no enumera NaN).

Pero no he descubierto cómo escribir consultas de definición de capa para seleccionar filas en función de estos valores especiales:

  • ColumnName IS NULL solo seleccionará valores NULL regulares, pero no NaN.
  • ColumnName = 1.#INF se rechaza por tener una sintaxis no válida.

¿Alguien sabe como hacer esto?


Fragmento de código de ArcObjects de C # para almacenar un valor 1. # INF en un campo de tabla (concepto básico):

De acuerdo a lo pedido. Como ya no estoy en el trabajo, el siguiente no es el código real que utilicé y no puedo probarlo en este momento, pero debería producir el efecto que se muestra en la captura de pantalla anterior:

ITable table = …;
int doubleFieldIndex = table.FindField(…);
IRow row = table.CreateRow(); 
row.Value[doubleFieldIndex] = double.PositiveInfinity;
row.Store();

Excelente pregunta No sabía que NaN se representa como un <Null> alineado a la derecha. Yo también espero las respuestas. por cierto, ¿cómo se ve el <null> alineado a la derecha en la ventana Buscar por atributo (cuando obtiene todos los valores distintos para ese campo?)
Devdatta Tengshe

@Devdatta, por lo que puedo decir, Obtener valores únicos no enumera NaN en absoluto.
stakx

¿Qué tipo de datos es este? ¿Es esta una tabla de atributos de una cuadrícula? ¿Importó estos datos de una fuente que no es ArcGIS?
Jakub Sisak GeoGraphics

@Jakub: Esta es una tabla dentro de una geodatabase de archivos, y los campos que se muestran en la captura de pantalla tienen el tipo Doble. Y no, la tabla se ha creado y editado con ArcObjects & ArcMap.
stakx

Sí, pero ¿cómo conseguiste esos valores en los campos?
whuber

Respuestas:


2

En ArcGIS, un número de punto flotante de precisión simple tiene un rango de aproximadamente -3.4E38 a 1.2E38.

Si realmente está viendo los valores 1. # INF -1. # INF que se muestran en su tabla de atributos (o mediante MS Access cuando analiza los atributos) o las estadísticas de la cuadrícula, entonces estos podrían ser números que se encuentran fuera del rango admitido por ESRI. Y si este número se encuentra fuera del rango admitido, es seguro decir que no podrá consultar estos valores. Podría intentar mayor y menor que el máximo y el mínimo (-3.4E38 a 1.2E38) y ver qué devuelve, pero dudo que la consulta funcione si la tabla / campo contiene un rango de valores no admitido.

Esta fuente sugiere que dichos valores podrían haberse importado de una aplicación de terceros no ESRI . Es posible que deba convertir los valores a un rango de valores admitido antes de importar a un producto ESRI.

En cuanto a los valores NULL / NuN, sería útil saber exactamente lo que estamos viendo en su ejemplo; Una tabla de atributos de una cuadrícula, shapefile, clase de entidad de geodatabase, etc. Por ejemplo, los shapefiles no pueden almacenar valores NULL, por lo que si una clase de entidad que contiene valores NULL se convierte en un shapefile, estos se almacenan como varios otros valores ("", 0, NuN ?, etc.) pero cuando se muestran en una tabla de atributos de ArcMap todavía se representan visualmente como "<Null>". Es posible que la alineación de los NULL en su tabla de atributos sea una situación así. Solo estoy especulando sobre por qué puede consultar los NULL alineados a la izquierda pero no los NULL alineados a la derecha, pero si se trata de un archivo de formas, intente importar en una geodatabase y luego vuelva a ejecutar la consulta. Lo más probable es que todos estos se conviertan en valores NULL adecuados.


@stakx: acabo de notar tus comentarios anteriores. No vi los comentarios mientras formulaba mi respuesta. Lo dejo aquí de todos modos.
Jakub Sisak GeoGraphics

En realidad, un shapefile es una forma plausible en la que tales valores pueden ocurrir. Con un archivo de forma, los números se mantienen en formato de caracteres ASCII de base 10, no como flotantes binarios o dobles. Si el valor almacenado se convierte en infinito o NaN, ¿cómo lo interpretará ArcGIS? Probablemente por capricho de quien codificó el lector de archivos de forma (lo que significa que el comportamiento de ArcGIS podría cambiar en cualquier momento, variando con la versión, el lanzamiento y la corrección de errores actualmente en vigor :-).
whuber
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.