ArcMap 정의 쿼리에서 NaN 또는 ± ∞ (특수 부동 소수점 값)을 참조하십니까?


10

우연히 ArcMap이 특수 부동 소수점 값을 사용자에게 표시하는 방법을 발견했습니다.

  • + ∞ (양의 무한대)가 1.#INF
  • –∞ (음의 무한대)는 다음과 같이 표시 될 -1.#INF것입니다.이 확인하지 않았습니다.
  • NaN (숫자가 아님)이 오른쪽 정렬로 표시됩니다 ( <Null>왼쪽 정렬과 혼동하지 않음 <Null>). NULL (결 측값)을 나타냅니다.

    ArcMap에서 볼 수있는 두 가지 다른 유형의 NULL을 보여주는 표

    ( 필드 계산기에서 고유 한 값 을 가져 오면 NaN이 전혀 표시되지 않습니다.)

그러나이 특수 값을 기반으로 행을 선택하기 위해 레이어 정의 쿼리를 작성하는 방법을 찾지 못했습니다.

  • ColumnName IS NULL NaN이 아닌 일반 NULL 값만 선택합니다.
  • ColumnName = 1.#INF 구문이 유효하지 않은 것으로 거부되었습니다.

누구든지 이것을하는 방법을 알고 있습니까?


1. # INF 값을 테이블 필드에 저장하기위한 C # ArcObjects 코드 스 니펫 (기본 개념) :

요청대로. 더 이상 일하지 않기 때문에 다음은 내가 사용한 실제 코드가 아니며 지금 테스트 할 수 없지만 위 스크린 샷에 표시된 효과를 생성해야합니다.

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

이것은 어떤 종류의 데이터입니까? 그리드의 속성 테이블입니까? ArcGIS 이외의 소스에서이 데이터를 가져 왔습니까?
Jakub Sisak GeoGraphics 2012

@Jakub : 파일 지오 데이터베이스 내의 테이블이며 스크린 샷에 표시된 필드의 유형은 Double입니다. 아니요, 테이블은 ArcObjects & ArcMap으로 작성 및 편집되었습니다.
stakx

예, 그러나 어떻게 그러한 가치를 현장에 얻었습니까?
whuber

답변:


2

ArcGIS에서 단 정밀도 부동 소수점 숫자 의 범위는 약 -3.4E38에서 1.2E38입니다.

실제로 속성 테이블 (또는 속성을 분석 할 때 MS Access를 통해) 또는 그리드 통계에 1. # INF -1. # INF 값이 표시되는 경우 ESRI에서 지원하는 범위를 벗어난 숫자 일 수 있습니다. 이 숫자가 실제로 지원되는 범위를 벗어나면이 값을 쿼리 할 수 ​​없다고 말하는 것이 안전합니다. 최대 및 최소 (-3.4E38 ~ 1.2E38)보다 크고 작은 것을 시도하고 반환되는 것을 볼 수는 있지만 테이블 / 필드에 지원되지 않는 값 범위가 포함되어 있으면 쿼리가 전혀 작동하지 않을 것입니다.

이 출처이러한 값을 타사 비 ESRI 응용 프로그램에서 가져 왔을 수 있음을 나타 냅니다. ESRI 제품으로 가져 오기 전에 값을 지원되는 값 범위로 변환해야 할 수 있습니다.

NULL / NuN 값은 예제에서 무엇을보고 있는지 정확히 아는 것이 유용합니다. 그리드, shapefile, 지오 데이터베이스 피처 클래스 등의 attrubute 테이블입니다. 예를 들어, shapefile은 NULL 값을 저장할 수 없으므로 NULL 값을 포함하는 피처 클래스가 다른 값 ( "", 0, NuN? 등)) 그러나 ArcMap 속성 테이블에 표시 될 때 여전히 "<Null>". 속성 테이블에서 NULL의 정렬이 그런 상황 일 수 있습니다. 왼쪽 정렬 된 NULL을 쿼리 할 수 ​​있지만 오른쪽 정렬 된 NULL을 쿼리 할 수없는 이유에 대해서만 추측하고 있지만 셰이프 파일 인 경우 가져 오기를 시도하십시오. 지오 데이터베이스에 쿼리를 다시 실행하면이 모든 것이 올바른 NULL 값으로 변환 될 수 있습니다.


@ stakx-방금 위의 의견을 발견했습니다. 답변을 작성할 때 의견을 보지 못했습니다. 어쨌든 여기에두고 있습니다.
Jakub Sisak GeoGraphics

실제로, shapefile은 그러한 값이 발생할 수있는 그럴듯한 방법 중 하나입니다. 셰이프 파일을 사용하면 숫자는 2 진 부동 소수점 또는 2 배가 아닌 10 진 ASCII 문자 형식으로 유지됩니다. 저장된 값이 무한대 또는 NaN으로 변환되면 ArcGIS는이를 어떻게 해석합니까? 아마도 shapefile 리더를 코딩 한 사람은 아마도 ArcGIS 동작이 버전, 릴리스 및 현재 적용되는 버그 수정에 따라 언제든지 변경 될 수 있음을 의미합니다 :-).
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.