GlideGeoPoint 개발자 가이드

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기10분
  • GlideGeoPoint 개발자 가이드에는 위도와 경도 값(지오포인트) 사이의 거리를 계산하고, 지정된 지오포인트 및 반경 값 내에서 위치를 반환하고, 지원되는 GlideGeoPoint API 함수에서 제공하는 추가 기능을 사용하는 방법에 대한 정보가 포함되어 있습니다.

    을 사용하면 단일 필드에 위도 및 경도 쌍을 Geo point field type 저장할 수 있습니다. 지오포인트는 지리적 관심 지점을 저장하거나, 두 관심 지점이 서로 얼마나 멀리 떨어져 있는지 묻거나, 다른 지점에서 특정 거리 내에 있는 모든 포인트를 검색할 때 유용할 수 있습니다. 예를 들어 지오포인트 기능을 사용하여 고객의 모든 배송 위치를 신속하게 파악한 다음 매장과의 거리에 따라 배송료를 조정할 수 있습니다.

    geotype 데이터 유형의 주요 측면은 다음과 같습니다.
    • 경도 및 위도 값을 나타내는 한 쌍의 십진수로 구성됩니다.
    • 경도 범위는 (-180, 180)입니다. 이 범위를 벗어나는 모든 값은 이 범위 내의 해당 값으로 정규화됩니다.
    • 위도 범위는 [-90, 90]입니다. 이 범위를 벗어나는 모든 값은 이 범위 내의 해당 값으로 정규화됩니다.
    • 지오포인트 값은 항상 입력으로 허용되며 쉼표로 구분된 쌍인 "경도,위도"로 표시됩니다. 괄호는 선택적으로 표현식을 둘러쌀 수 있습니다.
    • 경도 및 위도 값은 모두 소수점 이하 6자리까지 정밀도로 저장됩니다.

    지오포인트 데이터 유형에 대한 자세한 내용은 을 참조하십시오 Function field.

    이 가이드의 예제에서는 사용자 지정 테이블 u_geopoint가 u_name 및 u_location 필드로 채워진다고 가정합니다. 여기서 u_name '문자열' 유형이고 주요 도시의 이름을 나열하며 u_location '지오포인트' 유형이며 각 도시의 위 도/경도 지점을 각각 나열합니다.

    GlideGeoPoint API를 사용하여 지오포인트 생성

    GlideGeoPoint API를 사용하여 새 기록을 삽입하고 새 지오포인트를 생성합니다.

    API를 GlideGeoPoint - 전역 사용하면 지오포인트 값을 설정하고 검색할 수 있습니다. 그러나 문자열 표기법 또는 GlideGeoPoint 객체를 사용하는 스크립트에서 지오포인트를 직접 설정하여 새 기록을 삽입하는 추가 기능을 수행할 수 있습니다.

    문자열 표기법을 사용하여 새 레코드를 삽입합니다.
    문자열을 사용하여 지오포인트 필드 u_location 값을 설정합니다. 문자열은 쉼표로 구분된 경도 및 위도 값 쌍으로 구성됩니다. 다음 예제에서는 문자열 표기법을 사용하여 u_geopoint 테이블에서 새 지오포인트를 설정하는 방법을 보여 줍니다.
    주:
    글라이드지오포인트 API 값은 항상 경도, 위도 순서로 나열됩니다.
    const longitude = "-87.628018"; 
    const latitude = "41.885778"; 
    const geopoint = longitude + "," + latitude; 
     
    const myGeoPoint = new GlideRecord("u_geopoint"); 
    myGeoPoint.initialize(); 
    myGeoPoint.setValue("u_name", "Chicago"); 
    myGeoPoint.setValue("u_location", geopoint); 
    myGeoPoint.insert();
    GlideGeoPoint 개체를 사용하여 새 기록을 삽입합니다.
    GlideGeoPoint 객체를 사용하여 지오포인트 필드 u_location 값을 설정합니다.
    const longitude = -87.628018; 
    const latitude = 41.885778; 
    const geopoint = new GlideGeoPoint(longitude, latitude); 
     
    const myGeoPoint = new GlideRecord("u_geopoint"); 
    myGeoPoint.initialize(); 
    myGeoPoint.setValue("u_name", "Chicago"); 
    myGeoPoint.setValue("u_location", geopoint); 
    myGeoPoint.insert();

    GlideGeoPoint API를 사용하여 지오포인트 값 읽기

    getDisplayValue() GlideGeoPoint API 함수를 사용하여 특정 테이블에서 모든 지오포인트 값을 읽습니다.

    표준 GlideGeoPoint API를 사용하면 함수를 통해 GlideGeoPoint - getDisplayValue() 지오포인트 값을 검색할 수 있습니다. 그러나 전체 테이블에 정의된 모든 지오포인트를 읽을 수 있습니다. 다음 예제 스크립트에서는 getDisplayValue() 함수를 사용하여 'geopoint' 유형의 u_location 필드를 포함하는 u_geopoint 테이블에서 모든 레코드를 검색하는 방법을 보여 줍니다. 이 예제 스크립트를 자신의 특정 사용 사례에 맞게 조정할 수 있습니다.

    주:
    글라이드지오포인트 API 값은 항상 경도, 위도 순서로 나열됩니다.
    const myGeoPoint = new GlideRecord("u_geopoint"); 
    myGeoPoint.query(); 
     
    while (gr.next()) 
      gs.info("Name: {0}  Location: {1}",  
        myGeoPoint.getDisplayValue('u_name'),  
        myGeoPoint.getDisplayValue('u_location'));

    출력은 u_geopoint 테이블의 모든 기록을 반환합니다. 지오포인트의 표시 값에는 경도와 위도가 포함되며, 쉼표로 구분되고 괄호로 둘러싸여 있습니다.

    Name: London  Location: (-0.189937, 51.473584) 
    Name: Puerto Rico  Location: (-66.561301, 18.291136) 
    Name: Glasgow  Location: (-4.223964, 55.867846) 
    Name: Chicago  Location: (-87.628018, 41.885778) 
    Name: Tasmania  Location: (146.757677, -42.173578) 
    Name: Bermuda  Location: (-64.761595, 32.315798) 
    Name: Miami  Location: (-80.206458, 25.767242) 
    Name: Sydney  Location: (151.205230, -33.890115) 
    Name: Perth  Location: (115.871253, -31.971583) 
    Name: Dublin  Location: (-6.304994, 53.348317)

    두 지오포인트 사이의 거리 계산

    distance_sphere glide 함수를 사용하여 지오포인트 사이의 거리를 미터 단위로 반환합니다.

    지오포인트 글라이드 기능 인 distance_sphere를 사용하면 두 지오포인트 사이의 거리를 계산할 수 있습니다. 이 함수는 거리를 미터 단위로 반환합니다. distance_sphere 테이블의 함수 필드 요소를 정의하거나 스크립트를 통해 사용할 수 있습니다. 세 가지 구문이 지원되며 모든 매개 변수가 필요합니다.

    • GlideFunction:distance_sphere(geopoint1, geopoint2)
    • GlideFunction:distance_sphere(GeoPoint1, Longitude2, Latitude2)
    • GlideFunction:distance_sphere(경도1, 위도1, 경도2, 위도2)

    이러한 구문을 사용할 때는 다음 사항에 유의하십시오.

    • geopoint1 및 geopoint2는 'geopoint' 유형의 테이블 요소입니다.
    • 경도1, 경도 2, 위도 1, 위도 2는 숫자 테이블 요소 또는 상수입니다.
    • 모든 경우에 이 함수의 반환 값은 두 지리 지점 사이의 거리(미터)를 나타내는 10진수입니다

    다음 예제 스크립트는 distance_sphere 함수를 정의하여 u_geopoint 테이블의 u_location 필드에 저장된 모든 지오포인트와 경도 -0.189937, 위도 51.473584(대략 런던 위치) 지점 사이의 거리를 계산합니다. 이 함수는 결과를 생성하기 위해 GlideRecord 쿼리에 추가됩니다.

    const distToLondon =  
    "glidefunction:distance_sphere(u_location, '-0.189937', '51.473584')"; 
     
    const myGeoPoint = new GlideRecord('u_geopoint'); 
    gr.addFunction(distToLondon); 
    gr.query(); 
     
    while(myGeoPoint.next()) 
      gs.info("Name: {0}  Dist to London(m): {1}",  
        myGeoPoint.u_name, gr.getValue(distToLondon));

    출력은 u_location 필드에 런던과 도시 사이의 거리를 미터 단위로 나열합니다.

    Name: London  Dist to London(m): 0 
    Name: Glasgow  Dist to London(m): 555985.58456358 
    Name: Dublin  Dist to London(m): 464000.328892816 
    Name: Miami  Dist to London(m): 7123803.25406323 
    Name: Bermuda  Dist to London(m): 5547607.95564083 
    Name: Puerto Rico  Dist to London(m): 6799201.00905107 
    Name: Perth  Dist to London(m): 14485217.5596414 
    Name: Sydney  Dist to London(m): 17001034.4875494 
    Name: Tasmania  Dist to London(m): 17324634.4559516 

    두 지오포인트 사이의 거리 필터링

    DISTANCE_SPHERE_WITHIN 쿼리 조건을 사용하여 정의된 위도, 경도 지점의 반경 내에 지오포인트 값이 있는 기록을 필터링합니다.

    DISTANCE_SPHERE_WITHIN 구문 geopointDISTANCE_SPHERE_WITHINlongitude,latitude<radius 를 따라야 합니다.

    • 지오포인트 는 지오포인트 필드입니다.
    • 경도위도 는 10진수 상수입니다.
    • radius 는 10진수 상수(미터)입니다.
    주:
    이 식에서 보다 작음 기호(<)는 필수이며 구분 기호로만 사용됩니다. 다른 비교 연산자는 유효하지 않습니다.

    DISTANCE_SPHERE_WITHIN는 요청에서 킬로미터 또는 미터 값을 허용하지만 항상 출력 값을 미터 단위로 반환합니다.

    다음 예제 스크립트에서는 경도 -0.189937, 위도 51.473584(대략 런던 위치)에서 u_location 1,000,000km 미만인 레코드만 반환하는 인코딩된 쿼리를 작성하는 방법을 보여 줍니다. 이 항목을 실행하면 지정된 런던 반경 내의 도시를 나타내는 세 개의 레코드가 반환됩니다.

    const myGeoPoint = new GlideRecord("u_geopoint");  
    myGeoPoint.addEncodedQuery("u_locationDISTANCE_SPHERE_WITHIN-0.189937,51.473584<1000000");  
    myGeoPoint.query(); 
     
    while(gr.next()) 
        gs.info("Name:" + myGeoPoint.getDisplayValue("u_name")   
             + " Location:" + myGeoPoint.getDisplayValue("u_location"));

    출력:

    Name:London Location:(-0.189937, 51.473584) 
    Name:Dublin Location:(-6.304994, 53.348317) 
    Name:Glasgow Location:(-4.223964, 55.867846)

    다음 예시 스크립트는 첫 번째 예시 스크립트와 동일하지만 GlideRecord에 대한 대체 구문을 사용합니다.

    const myGeoPoint = new GlideRecord("u_geopoint");  
    myGeoPoint.addQuery("u_location", "DISTANCE_SPHERE_WITHIN", "-0.189937,51.473584<1000000");  
    myGeoPoint.query(); 
     
    while(myGeoPoint.next()) 
        gs.info("Name:" + myGeoPoint.getDisplayValue("u_name")   
             + " Location:" + myGeoPoint.getDisplayValue("u_location"));

    출력:

    Name:London Location:(-0.189937, 51.473584) 
    Name:Dublin Location:(-6.304994, 53.348317) 
    Name:Glasgow Location:(-4.223964, 55.867846)