데이터 통합Pipeline Builder데이터 변환지리공간 변환 생성

본 번역은 검증되지 않았습니다. AIP를 통해 영문원문으로부터 번역되었습니다.

지리공간 변환 생성

Pipeline Builder를 사용하면 지리공간 데이터를 로드하고 변환한 후 활용할 수 있습니다. 만약 지리공간 워크플로가 현재 Pipeline Builder의 기능으로 지원되지 않는 경우, Code Repositories에서 데이터를 변환하기 위해 Foundry의 레거시 지리공간 문서를 참조하십시오.

지리공간 데이터 모델링

논리 유형

Pipeline Builder는 기본 유형(스트링, 정수, 부울, 배열, 구조)에 데이터를 대한 추가 제약 조건이 있는 논리 유형 개념을 사용하여 지리공간 데이터를 내부적으로 모델링합니다. 예를 들어, Geometry 유형은 유효한 GeoJSON이어야 하는 스트링으로 정의되며 Geo-point-180180 사이의 경도 및 -9090 사이의 위도를 포함한 구조여야 합니다. 지원되는 유형 전체 목록은 아래에서 찾을 수 있습니다.

Pipeline Builder의 모든 논리 유형은 기본 유형의 상속자입니다. 예를 들어, Geometry는 스트링 유형의 입력을 예상하는 표현식에 입력으로 사용할 수 있지만 그 반대는 아닙니다. 기본 유형에서 해당 기본 유형을 확장하는 특정 논리 유형으로 캐스트하려면 "Logical Type Cast" 표현식을 사용할 수 있으며, 이 표현식은 해당 논리 유형과 관련된 제약 조건을 데이터에 적용하고 검증에 실패하는 값은 null로 처리합니다. 표현식이 입력 및 출력으로 논리 유형을 지정할 수 있게 되면, 지리공간 특정 표현식이 GeoJSON 스트링을 예상할 때 GeoJSON 스트링이 수신됩니다.

지원되는 지리공간 유형

Pipeline Builder는 현재 다음 지리공간 유형을 지원합니다.

  • Geo-point: 경도위도 구조체로, 경도-90에서 90 사이의 더블 값이고, 위도-180에서 180 사이의 더블 값입니다. Geo-point는 WGS:84 또는 EPSG:4326 좌표 참조 시스템(CRS)에 따라 유효한 (x, y) 좌표여야 합니다.
  • Geometry: GeoJSON 명세에 따른 문자열화된 JSON 블롭. 개별 좌표는 Geo-point 유형처럼 WGS:84/EPSG:4326 형식으로 되어야 합니다.
  • H3Index: 유효한 H3 육각형 인덱스를 나타내는 스트링입니다.
  • LatLonBoundingBox: minLat, minLon, maxLat, maxLon 구조체로 표현된 경계 상자로, 각 항목은 유효한 Geo-point이며 maxLat > minLatmaxLon > minLon입니다.
  • Ontology Geo-point: 온톨로지의 지리점 속성 유형과 호환되는 스트링으로, {lat},{lon} 형식을 충족해야 하며, -90 <= lat <= 90-180 <= lon <= 180입니다.
  • MGRS: 유효한 MGRS(군사 격자 참조 시스템) 좌표를 나타내는 스트링입니다.

지리공간 데이터 로드

Pipeline Builder는 지리공간 데이터를 위한 다양한 변환 및 표현식을 지원합니다.

  • Geo-point:
    • Geo-point 열 생성: lat,lon 쌍을 가져와서 위에서 설명한 범위를 검증하고 Geo-point 표현으로 변환합니다.
    • 좌표계(CRS)에서 Geo-point 생성: x,y 쌍과 좌표 참조 시스템을 가져와서 WGS:84로 (x,y)를 투영한 다음 Geo-point 표현을 구성합니다. EPSG 데이터베이스의 대부분의 좌표계, 모든 UTM 영역 포함,에서 변환을 지원합니다.
  • Geometry:
    • 잘 알려진 텍스트(WKT) 구문 분석: 잘 알려진 텍스트(WKT) 스트링을 Geometry 논리 유형으로 변환합니다. 선택적으로 소스 좌표계 식별자를 제공하여 WKT가 이미 WGS:84가 아닌 경우 소스 CRS에서 WGS:84로 변환할 수 있습니다.
    • Geometry 정규화: WGS:84 형식의 GeoJSON 스트링이 주어지면 다음 속성을 정규화합니다: 올바른 순서(오른손 법칙), 닫힌 링, 중복 제거, 점의 일정한 차원.
    • Shapefile에서 행 추출: 원시 Shapefile의 데이터셋이 주어지면 각 Shapefile을 각 항목의 Geometry 및 속성이 포함된 행으로 구문 분석합니다. 출력 데이터셋에는 Geometry 열과 사용자가 나열한 각 속성에 대한 열이 있습니다. WGS:84가 아닌 데이터셋의 좌표 참조 시스템을 지정할 수 있습니다.
    • GeoJSON에서 행 추출: 원시 GeoJSON 파일의 데이터셋이 주어지면 각 Shapefile을 각 항목의 Geometry 및 속성이 포함된 행으로 구문 분석합니다. 출력 데이터셋에는 Geometry 열과 사용자가 나열한 각 속성에 대한 열이 있습니다. WGS:84가 아닌 데이터셋의 좌표 참조 시스템을 지정할 수 있습니다.

위의 두 유형 사이에서 번역할 추가 표현식이 있으며, H3 인덱스, MGRS, 경계 상자 및 온톨로지 지리점 형식으로 변환할 수도 있습니다.

좌표 참조 시스템 및 투영에 관한 문서에서 지리공간 데이터 형식에 대해 자세히 알아보십시오.

지리공간 데이터 변환

Pipeline Builder의 지리공간 유형의 열을 채운 후 지리공간 데이터에 특화된 변환을 활용할 수 있습니다. 대부분의 변환(지오 조인 제외)은 스트리밍과 일괄 워크플로에서 모두 지원됩니다. 일부 주요 사항은 다음과 같습니다.

Geometry 비교

  • 교차점
  • 차집합
  • 대칭 차집합
  • 합집합(열 별 및 집계)

구면 기하학

  • 두 점 사이의 Haversine/큰 원거리
  • 역 Haversine 거리(시작점, 거리, 방위각이 주어진 경우 종점 계산)
  • Geometry의 면적/중심점/길이

H3

  • 특정 해상도에서 H3 육각형의 이웃 찾기
  • 특정 해상도에서 H3 육각형으로 폴리곤 적용

복잡한 모양 근사

  • 타원/원
  • 범위 팬(고리 영역)
  • 주어진 Geometry의 Convex Hull

지리공간 조인

Pipeline Builder는 다음 지리공간 조인을 지원합니다:

Geometry 교차점 조인

Pipeline Builder의 Geometry 교차점 조인은 Geometry 유형 열이 있는 두 개의 데이터셋이 필요합니다. Geometry 교차점 조인은 Ontology Geo-point나 Geo-point를 입력 유형으로 받지 않습니다. 조인을 적용하기 전에 Geometry 열을 정규화하고 출력에서 필요하지 않은 경우 null 값은 명시적으로 필터링하는 것이 좋습니다. 파이프라인에 비결정성이나 다른 조인이 있는 경우, 지오조인 전에 체크포인트를 추가하는 것이 좋습니다.

Pipeline Builder는 중간 크기의 Geometry(약 34개의 점까지)에 대해 최대 100만 행까지 조인할 수 있으며, 출력 행 수가 두 배 증가한다고 가정합니다. 편향된 데이터의 경우, 한쪽이 최대 2억 5천만 행에 대해 다른 한쪽이 1.6천 행까지 지원할 수 있습니다. Geometry의 크기가 증가함에 따라 안정성이 저하될 수 있습니다. 조인은 하나의 대규모 Geometry(약 4만 개의 점)에 대해 최대 50만 행까지 지원할 수 있습니다. 더 큰 규모는 간헐적으로 성공할 수 있지만 공식적으로 지원되지 않습니다.

출력에서 행 수가 교차 조인의 행 수와 비슷한 경우, 조인에서 안정성이 저하될 수 있습니다.

Geometry 교차점 조인 대신에 "Geometries have intersection" 필터로 구성된 교차 조인을 사용하면 메모리 사용량이 더 안정적일 수 있습니다. 그러나 이 접근 방식은 빌드 시간이 급격하게 증가할 수 있습니다. 또 다른 대안은 Code Repositories에서 geospatial-tools PySpark 라이브러리를 사용하는 것입니다. Palantir 담당자에게 자세한 정보를 문의하십시오.

Geometry 거리 조인

Pipeline Builder의 Geometry 거리 조인은 Geometry 유형 열이 있는 두 개의 데이터셋이 필요하며, 거리 값은 0보다 커야 하고 거리의 단위를 결정할 좌표 참조 시스템 스트링이 필요합니다. 예를 들어, 좌표 참조 시스템에 "epsg:4326"이 제공되면 거리는 도 단위로 간주됩니다. 교차점 조인과 마찬가지로 Geometry 열을 정규화하고 출력에서 필요하지 않은 경우 null 값을 명시적으로 필터링하는 것이 좋습니다. 파이프라인에 다른 조인이나 비결정성이 있는 경우 조인 전에 체크포인트를 추가합니다.

Pipeline Builder는 작은 Geometry(각각 약 8개의 점까지)에 대해 최대 100만 행까지 조인할 수 있으며, 조인의 결과로 행 수가 2배 증가한다고 가정합니다. 출력 행 수가 교차 조인의 행 수와 비슷한 경우, 안정성이 저하될 수 있습니다.

Geometry 거리 조인 대신에 행 수 증가가 클 때 메모리 사용량이 더 안정적일 수 있는 Geometry 버퍼와 "Geometries have intersection" 필터로 구성된 교차 조인을 사용할 수 있습니다. 그러나 대부분의 경우 이 접근 방식은 빌드 시간이 급격하게 증가할 수 있습니다.

Geometry k-최근접 이웃(KNN) 조인

Pipeline Builder의 Geometry 최근접 이웃 조인은 두 개의 데이터셋이 필요합니다: base Geometry 데이터셋과 neighbors 포인트 데이터셋입니다. k 정수 파라미터는 각 기본 Geometry에 대해 찾을 최근접 이웃 수를 설정합니다. 거리를 계산하고 비교할 때 사용할 좌표 참조 시스템이 필요합니다. 결과는 기본 Geometry에 가장 가까운 k개의 점 중 하나인 geopoint를 포함하는 결합된 행 세트입니다. 동점은 임의로 처리되며 결과는 특정 순서로 반환되지 않습니다.

이 조인에는 두 가지 요구 사항이 있습니다:

  • neighbors 데이터셋의 모든 geopoints가 실행기와 드라이버 메모리에 맞아야 합니다. 이는 현재 하드 요구 사항으로 조인의 확장성을 제한합니다. neighbors 데이터셋을 분배하는 데 필요한 유즈케이스가 있는 경우 Palantir 담당자에게 문의하십시오.

  • Foundry는 현재 neighbors 데이터셋에서 geopoint 논리 유형만 허용하여 메모리 소비를 제한합니다. 조인의 neighbors 쪽에 비점 Geometry가 필요한 경우 Palantir 담당자에게 문의하십시오.

실제로, Pipeline Builder는 이웃 데이터셋에서 몇 백 천 행까지 k의 적당한 값(< 5)을 지원하며, 기본 데이터셋에는 최대 백만 개의 Geometry가 있습니다. 두 데이터셋이 모두 몇 백 천 행이 있는 경우, Pipeline Builder는 훨씬 더 큰 k값을 지원할 수 있습니다. 이런 경우 최대 수백 개의 최근접 이웃을 빠르게 찾을 수 있습니다. 이 시점을 넘어서 입력의 규모를 늘리면 간헐적으로 성공할 수 있지만 일반적으로 지원되지 않습니다.

문제 해결

조인이 안정성 문제를 겪고 있다면 다음 단계를 사용하여 수정하십시오:

  1. 조인 전에 불필요한 열을 제거합니다.
  2. 입력 Geometry를 단순화합니다(예: 큰 Geometry의 경우 더 굵은 입자를 사용할 수 있나요?)
  3. 수직 확장; 드라이버와 실행기에 대한 메모리를 늘리는 수동 컴퓨트 프로필 선택.
  4. 가장 큰 입력 데이터셋을 약 2500만 행의 세트로 분할한 다음 별도의 빌드에서 결과를 함께 연결합니다.
  5. 출력 행 수 감소(즉, 왼쪽과 오른쪽 Geometry 간의 교차점 수).

변환 결과 미리보기

Pipeline Builder에서 데이터를 변환한 후에는 맵에서 이러한 변환 결과를 시각적으로 확인하여 유효성을 검사할 수 있습니다. 일반 미리보기 창에서 맵에서 미리보기하려는 셀을 선택합니다(셀은 위에서 언급한 지리공간 유형 중 하나의 열에서 가져와야 합니다). 오른쪽 클릭하고 Open Geo Preview를 선택합니다.

미리보기 창에서 지오 미리보기 열기

새로운 미리보기 탭이 나타나며, 선택한 셀이 지도에 표시됩니다.

선택한 셀의 지오 미리보기

온톨로지와 함께 지리공간 데이터 사용

Pipeline Builder의 지리공간 기능은 플랫폼 전반에 걸쳐 하류 데이터와 원활하게 통합되도록 설계되었습니다.

  • 온톨로지
    • Builder의 Geometry 열 유형은 온톨로지의 geoshape 유형과 호환되지만, Builder에서 오브젝트로 열을 매핑하기 전에 "Normalize Geometry" 표현식을 적용하십시오. 이렇게 하면 geoshape 데이터가 온톨로지에 데이터를 색인하는 동안 수행되는 검증을 통과하게 됩니다.
    • 현재 Geo-point 논리 유형은 온톨로지에서 직접 사용할 수 없지만, 색인하기 전에 "Ontology Geo-point" 유형(온톨로지의 geohash 유형과 동등)으로 쉽게 변환할 수 있습니다.
  • 데이터셋
    • 지리공간 유형 데이터는 Builder 파이프라인의 출력 데이터셋에서 유지되므로 해당 데이터셋에서 하류 파이프라인을 생성하면 데이터가 올바른 논리/지리공간 유형을 계속 유지합니다.