Посилаючись на NaN або ± ∞ (спеціальні значення з плаваючою точкою) у запитах визначення ArcMap?


10

Я випадково виявив, як ArcMap відображає користувачеві спеціальні значення з плаваючою комою.

  • + ∞ (позитивна нескінченність) відображається як 1.#INF
  • –∞ (негативна нескінченність) нібито відображатиметься як -1.#INF- я цього не підтвердив.
  • NaN (не число) відображається як вирівнювання праворуч <Null>- не плутати з вирівнюванням ліворуч <Null>, що позначає NULL (відсутні значення):

    Знімок екрана таблиці, переглянутої в ArcMap, що показує два різних типи NULL

    ( Отримати унікальні значення в польовому калькуляторі зовсім не вказано NaN.)

Але я не дізнався, як писати запити на визначення рівня для вибору рядків на основі цих спеціальних значень:

  • ColumnName IS NULL буде вибирати лише регулярні значення NULL, але не NaN.
  • ColumnName = 1.#INF відхилено як недійсний синтаксис.

Хтось знає, як це зробити?


Фрагмент коду C # ArcObjects для зберігання значення 1. # INF у полі таблиці (основна концепція):

Як вимагалось. Оскільки я більше не працюю, наступний код не є реальним кодом, який я використовував, і не можу перевірити його зараз, але він повинен створити ефект, показаний на скріншоті вище:

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

Відмінне запитання. Мені не було відомо, що NaN представлений як вирівняний правою стороною <Null>. Я теж сподіваюся на відповіді. btw, як виглядає правий вирівняний <null> у вікні "Пошук за атрибутами" (Коли ви отримаєте всі різні значення для цього поля?)
Devdatta Tengshe

@Devdatta, наскільки я можу сказати, Отримати унікальні значення зовсім не вказується на NaN.
stakx

Що це за дані? Це таблиця атрибутів Grid? Ви імпортували ці дані з джерела, яке не належить до ArcGIS?
Jakub Sisak GeoGraphics

@Jakub: Це таблиця всередині бази даних геоданих, і поля, показані на скріншоті, мають тип Double. І ні, таблиця створена та відредагована за допомогою ArcObjects & ArcMap.
stakx

Так, але як ви отримали такі значення в полях?
whuber

Відповіді:


2

У ArcGIS одноточне число з плаваючою комою має діапазон приблизно від -3,4E38 до 1,2E38.

Якщо ви насправді бачите значення 1. # INF -1. # INF, відображені у вашій таблиці атрибутів (або через MS Access при аналізі атрибутів) або статистиці сітки, то це можуть бути числа, які не входять у діапазон, підтримуваний ESRI. І якщо ця кількість насправді не відповідає підтримуваному діапазону, можна сказати, що ви не зможете запитувати ці значення. Ви можете спробувати більше і менше максимального і мінімального (від -3,4E38 до 1,2E38) і побачити, що він повертається, але я сумніваюся, що запит буде працювати взагалі, якщо таблиця / поле містять непідтримуваний діапазон значень.

Це джерело припускає, що такі значення можуть бути імпортовані з додатку третьої сторони, що не стосується ESRI . Можливо, вам доведеться перетворити значення в підтримуваний діапазон значень перед імпортом у продукт ESRI.

Щодо значень NULL / NuN, було б корисно точно знати, що ми дивимось у вашому прикладі; Таблиця аттрубування сітки, файлу форми, класу особливостей бази даних геоданих тощо. Наприклад, shapefiles не може зберігати значення NULL, тому якщо thant класу об'єктів містить значення NULL, перетворюється на файл форми, вони зберігаються як різні інші значення ("", 0, NuN? Тощо), але коли відображається в таблиці атрибутів ArcMap, вони все ще візуально представлені як "<Null>". Можливо, вирівнювання NULL в таблиці атрибутів є такою ситуацією. Я лише спекулюю на тему, чому ви можете запитувати ліві вирівнювані NULL, але не праві, вирівняні NULL, але якщо це файл файлів, спробуйте імпортувати на базу геоданих, потім знову запустіть запит. Цілком ймовірно, що всі вони будуть перетворені у відповідні значення NULL.


@stakx - я щойно помітив ваші коментарі вище. Я не бачив коментарів, коли формулював свою відповідь. Я все одно залишаю його тут.
Jakub Sisak GeoGraphics

Насправді, файл форми є одним з правдоподібних способів, коли такі значення можуть виникати. За допомогою форм-файлу цифри підтримуються у форматі символів ASCII базового 10, а не як двійкові поплавці чи подвійні. Якщо збережене значення перетворюється на нескінченність або NaN, як ArcGIS буде його інтерпретувати? Можливо, за примхою того, хто кодував зчитувач форм-файлів (а це означає, що поведінка ArcGIS може змінитися в будь-який час, залежно від версії, випуску та виправлення помилок, що діють :-).
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.