콘텐츠로 이동

3. 응용 프로그램 개발#

본 장에서는 응용 프로그램 개발자가 공간 데이터에 접근하기 위해 사용하는 API 들에 대해 설명한다.

API 사용 방법#

Spatial API의 사용방법에 대해 기술한다. ODBC CLI (Altibase CLI) 에 대한 내용은 CLI User's Manual을 참조한다.

Spatial API 와 ODBC CLI 관계#

Spatial API는 ODBC CLI에서 공간객체를 사용할 때 이를 도와주는 유용한 라이브러리이다. 공간객체를 이용하는 ODBC 애플리케이션을 작성할 때 함께 사용한다.

아래 그림과 같이 Spatial API는 Altibase 서버 및 ODBC CLI 와 어떠한 호출 관계도 존재하지 않으며, 공간 데이터를 생성하고 해석하기 위하여 사용한다.

기본 사용법#

ODBC CLI 애플리케이션 프로그램은 아래 그림과 같이 전형적으로 크게 3단계로 구성되며 그 단계의 중간에 Spatial API가 같이 호출되게 된다.

  • 초기설정

  • 트랜잭션 처리

  • 종료

위의 세가지 외에도 진단 메세지 처리와 같은 작업이 있는데 이러한 작업은 애플리케이션 전반에 걸쳐 발생한다.

초기설정#

초기화는 환경 및 연결핸들을 할당하고 초기화한다. 초기화 단계에서 Spatial API를 사용하기 위한 핸들을 할당해야 하며 ODBC CLI API 초기화 순서와는 관계없다.

Transcation 처리#

다음은 일반적인 ODBC CLI를 이용한 SQL 처리 절차이다. 이 ODBC CLI호출의 중간에 공간 생성 함수나 공간 검색함수들을 호출하여 처리한다.

종료#

애플리케이션에서 할당되었던 핸들을 단절하고 할당되었던 메모리를 회수한 후 애플리케이션을 종료한다.

응용 프로그램 작성 예#

공간 객체의 검색#

공간 객체를 검색하기 위한 기본 사용법은 다음과 같다.

ODBC CLI를 이용하여 SELECT 구문을 수행하고 레코드를 검색한다.

Spatial API를 통해 조회한 레코드에서 GEOMETRY 타입 컬럼의 데이터를 해석한다.

공간 객체 검색을 위한 샘플 응용 프로그램은 아래 위치에 있다.

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp

공간 객체의 삽입, 삭제, 갱신#

공간 객체를 삽입, 삭제, 갱신하기 위한 기본 사용법은 다음과 같다.

먼저, Spatial API를 통해 공간 객체를 생성한다.

그리고, ODBC CLI를 이용하여 INSERT, UPDATE, DELETE 구문을 수행한다.

공간 객체 삽입, 삭제, 갱신을 위한 샘플 응용 프로그램은 아래 위치에 있다.

  • $ALTIBASE_HOME/sample/SPATIAL/insertObject.cpp

  • $ALTIBASE_HOME/sample/SPATIAL/deleteObject.cpp

  • $ALTIBASE_HOME/sample/SPATIAL/updateObject.cpp

Spatial API용 데이터 타입과 함수#

API 기본 데이터 타입#

Spatial API를 이용한 응용 프로그램 작성시, 플랫폼 간의 C 타입 호환성을 보장하기 위하여 ODBC의 데이터 타입 또는 타입의 별명을 사용하길 권장한다.

각 데이터 타입의 정확한 정의는 $ALTIBASE_HOME/include/acsTypes.h에서 확인할 수 있다.

ODBC Type Alias Name Meaning
SQLSCHAR SChar 8-bit signed char
SQLCHAR UChar 8-bit unsigned char
SQLSMALLINT SShort 16-bit signed small integer
SQLUSMALLINT UShort 16-bit unsigned small integer
SQLINTEGER SInt 32-bit signed integer
SQLUINTEGER UInt 32 -bit unsigned integer
SQLBIGINT SLong 64-bit signed big integer
SQLUBIGINT ULong 64-bit unsigned big integer
SQLREAL SFloat 32-bit signed float number
SQLDOUBLE SDouble 64-bit signed double float number
SQLLEN vSLong 32-bit signed integer on 32-bit platform 64-bit signed integer on 64-bit platform
SQLULEN vULong 32-bit unsigned integer on 32-bit platform 64-bit unsigned integer on 64-bit platform

[표 3‑1] Spatial API 기본 데이터 타입

공간 데이터 타입의 자료구조#

Altibase 서버 내부에서 저장하는 공간 객체의 자료 구조의 이름은 접두어(prefix)로 std(Spatio-Temporal Datatype)를 가지며, 각 자료 구조는 서버와 클라이언트가 동일한 형태로 저장, 관리, 해석한다.

각 구조체의 정의는 $ALTIBASE_HOME/include/ stdNativeTypes.i에서 확인할 수 있다.

Object Type Member Type Meaning
stdPoint2DType mType UShort = 2001
mByteOrder SChar Byte order
mPadding SChar Padding byte for memory alignment
mSize UInt The size of the object, including the header
mMBR stdMBR Minimum boundary rectangle
mPoint stdPoint2D Point

[표 3‑2] 2차원 점 객체의 자료구조

API 함수 이름#

Spatial API에서 제공하는 함수의 이름은 접두어로 ACS를 가지며 Altibase Call-level Spatial을 의미한다.

각각의 함수는 다음 절부터 다음과 같이 분류하여 설명한다.

  • 핸들 및 에러 관리 함수

  • 객체 생성 함수

$ALTIBASE_HOME/sample/SPATIAL/insertObject.cpp파일을 참고하기 바란다.

  • 객체 검색 함수

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

  • Endian 함수

각 함수에 대한 정확한 인터페이스는 다음 파일을 참조한다.

$ALTIBASE_HOME/include/ulsAPI.i

핸들 및 에러 관리 함수#

ACSAllocEnv#

Spatial API 사용을 위한 핸들을 할당하고 초기화한다.

구문#

ACSRETURN ACSAllocEnv( ACSHENV * aHandle );

인자#

자료유형 인자 사용 설명
ACSHENV * aHandle 출력 환경 핸들 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE

설명#

응용 프로그램 작성시 Spatial API를 사용하기 위해서는 먼저 핸들을 할당받아야 한다. 이 환경 핸들은 Spatial API 사용시에 발생하는 에러정보등을 관리한다.

진단#

ACS_INVALID_HANDLE이 나오는 경우는 함수인자인 aHandle 값을 NULL을 주었거나 할당할 메모리가 부족할 때 발생한다.

관련 함수#

ACSFreeEnv

예제#

ACSHENV sAcsEnv;
if ( ACSAllocEnv(&sAcsEnv) != ACS_SUCCESS )
{
    printf("ACSAllocEnv error!!₩n");
    exit(-1);
}

ACSFreeEnv#

Spatial API 사용을 위해 할당된 핸들을 제거한다.

구문#

ACSRETURN ACSFreeEnv( ACSHENV  aHandle );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE

설명#

ACSAllocEnv에서 얻은 환경 핸들을 위해 할당된 메모리를 반환한다.

관련 함수#

ACSAllocEnv

예제#

ACSHENV sAcsEnv;
…
ACSFreeEnv( sAcsEnv );

ACSError#

Spatial API 함수 호출이 실패했을 때 관련 에러정보를 가져온다.

구문#

ACSRETURN ACSError(     ACSHENV       aHandle,
                        SQLUINTEGER   * aErrorCode, 
                        SQLSCHAR      ** aErrorMessage,
                        SQLSMALLINT   * aErrorMessageLength );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
SQLUINTEGER* aErrorCode 출력 에러코드를 값을 리턴할 버퍼를 가리키는 포인터
SQLSCHAR ** aErrorMessage 출력 에러메시지를 리턴할 버퍼를 가리키는 포인터
SQLSMALLINT* aErrorMessageLength 출력 반환 받은 에러메시지의 크기를 리턴할 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE

설명#

특정 환경 핸들에 대해 가장 최근에 호출한 Spatial API 함수와 연관된 에러정보를 가져온다.

관련 함수#

ACSAllocEnv

예제#

ACSHENV        sAcsEnv;
SQLUINTEGER   sAcsErrNo;
SQLSCHAR    * sErrMsg;
SQLSMALLINT   sMsgLength;
…
if( ACSCreatePoint2D( sAcsEnv, 
sGeoBuffer, 
sGeoBufferSize, 
& sPoint, 
0, 
& sGeomSize )!= ACS_SUCCESS ) 
{
 if( ACSError( sAcsEnv,  
& sAcsErrNo, 
& sErrMsg, 
& sMsgLength ) == ACS_SUCCESS )
{
        printf( "ERROR(%d) : %s\n", sErrNo, sErrMsg );
    }
}

객체 생성 함수#

ACSCreatePoint2D#

2차원 공간상의 Point 공간 객체를 생성한다.

구문#

ACSRETURN ACSCreatePoint2D(      ACSHENV          aHandle,
                                 stdGeometryType  * aBuffer,
                                 SQLLEN           aBufferSize,
                                 stdPoint2D       * aPoint,
                                 SQLINTEGER       aSRID,
                                 SQLLEN           * aObjLength );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aBuffer 출력 생성될 Point객체 데이터가 담길 버퍼를 가리키는 포인터
SQLLEN aBufferSize 입력 aBuffer의 최대 크기
stdPoint2D * aPoint 입력 생성될 Point객체의 좌표값을 갖고 있는 stdPoint2D 구조체를 가리키는 포인터
SQLINTEGER aSRID 입력 입력 공간객체의 공간참조시스템 ID (현재 사용하지 않음)
SQLLEN * aObjLength 출력 생성된 공간객체의 크기를 리턴할 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

stdPoint2D 구조체에 저장된 위치 데이터를 입력 받아서 GEOMETRY타입의 데이터로 Point 공간 객체를 생성한다. stdPoint2D 구조체의 정의는 $ALTIBASE_HOME/include/stdNativeTypes.i에서 확인할 수 있다.

aBuffer가 NULL일 경우는 생성될 공간객체의 크기만 aObjLength에 반환한다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F5(332277) 버퍼공간부족 생성될 공간객체의 크기가 입력받은 버퍼의 크기보다 큰 경우

예제#

$ALTIBASE_HOME/sample/SPATIAL/insertObject.cpp파일을 참고하기 바란다.

ACSCreateLineString2D#

2차원 공간상에 LineString 객체를 생성한다.

구문#

 ACSRETURN ACSCreateLineString2D( ACSHENV            aHandle,
                                  stdGeometryType    * aBuffer,
                                  SQLLEN             aBufferSize,
                                  SQLUINTEGER        aNumPoints,
                                  stdPoint2D         * aPoints,
                                  SQLINTEGER         aSRID,
                                  SQLLEN             * ObjLength);

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aBuffer 출력 생성될 LineString객체 데이터가 담길 버퍼를 가리키는 포인터
SQLLEN aBufferSize 입력 aBuffer의 최대 크기
SQLUINTEGER aNumPoints 입력 생성될 객체의 point 개수
stdPoint2D * aPoints 입력 생성될 LineString을 구성하는 점들의 좌표를 갖고 있는 stdPoint2D 구조체의 배열
SQLINTEGER aSRID 입력 입력된 공간 객체의 공간참조시스템 ID (현재 사용하지 않음)
SQLLEN * aObjLength 출력 생성된 공간객체의 크기를 리턴할 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

stdPoint2D 구조체의 배열로 저장된 LineString 데이터를 입력 받아서 GEOMETRY타입의 데이터로 LineString 객체를 생성한다,

aBuffer가 NULL일 경우는 생성될 공간객체의 크기만 aObjLength에 반환한다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F5(332277) 버퍼공간부족 생성될 공간객체의 크기가 입력받은 버퍼의 크기보다 클 경우
0x511F8(332280) 입력범위 오류 입력된 값의 범위가 잘못된 경우. aNumPoints는 2이상 이어야한다,

예제#

$ALTIBASE_HOME/sample/SPATIAL/insertObject.cpp파일을 참고하기 바란다.

ACSCreateLinearRing2D#

2차원 공간상에 LinearRing 객체를 생성한다.

구문#

 ACSRETURN ACSCreateLinearRing2D(    ACSHENV          aHandle,
                                     stdLinearRing2D  * aBuffer,
                                     SQLLEN           aBufferSize,
                                     SQLUINTEGER      NumPoints,
                                     stdPoint2D       * aPoints,
                                     SQLLEN           * aObjLength);

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdLinearRing2D * aBuffer 출력 생성될 LinearRing객체 정보가 담길 버퍼를 가리키는 포인터
SQLLEN aBufferSize 입력 aBuffer의 최대 크기
SQLUINTEGER aNumPoints 입력 aPoints에 저장된 점의 개수
stdPoint2D * aPoints 입력 생성될 LinearRing을 구성하는 점들의 좌표를 갖고 있는 stdPoint2D 구조체의 배열
SQLLEN * aObjLength 출력 생성된 공간객체의 크기를 리턴할 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

LinearRing 을 구성하는 점들의 좌표를 입력 받아서 stdLinearRing2D 구조체 타입의 LinearRing을 생성한다. 이 함수로 생성한 LinearRing은 이후 GEOMETRY타입의 Polygon객체를 생성할 때 사용한다.

aBuffer가 NULL일 경우는 생성될 공간객체의 크기만 aObjLength에 반환한다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F5(332277) 버퍼공간부족 생성될 공간객체의 크기가 입력받은 버퍼의 크기보다 클 경우
0x511F8(332280) 입력범위 오류 입력된 값의 범위가 잘못된 경우. aNumPoints는 2이상 이어야한다,

관련 함수#

ACSCreatePolygon2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/insertObject.cpp파일을 참고하기 바란다.

ACSCreatePolygon2D#

2차원 공간상에 Polyon 객체를 생성한다.

구문#

ACSRETURN ACSCreatePolygon2D(      ACSHENV           aHandle,
                                   stdGeometryType   * aBuffer,
                                   SQLLEN            aBufferSize,
                                   SQLUINTEGER       aNumRings,
                                   stdLinearRing2D   ** aRings,
                                   SQLINTEGER        aSRID,
                                   SQLLEN            * aObjLength);

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType* aBuffer 출력 생성될 공간객체가 들어가는 버퍼를 가리키는 포인터
SQLLEN aBufferSize 입력 aBuffer변수의 최대 크기
SQLUINTEGER aNumRings 입력 aRings에 저장된 Ring의 개수
stdLinearRing2D** aRings 입력 폴리곤을 구성하는 Ring들을 가리키는 포인터들의 배열
SQLINTEGER aSRID 입력 입력 공간 객체의 공간참조시스템 ID (현재 사용하지 않음)
SQLLEN * aObjLength 출력 생성된 공간객체의 크기를 리턴할 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

stdLinearRing2D 구조체의 배열로 저장된 데이터를 입력 받아서 GEOMETRY타입의 Polyon 객체를 생성한다.

aBuffer가 NULL이라면 aObjLength에 크기만 넘겨준다,

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F5(332277) 버퍼공간부족 생성될 공간객체의 크기가 입력받은 버퍼의 크기보다 클 경우
0x511F8(332280) 입력범위 오류 입력된 값의 범위가 잘못된 경우. aNumRings는 1보다 크거나 같아야한다.

관련 함수#

ACSCreateLinearRing2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/insertObject.cpp파일을 참고하기 바란다.

ACSCreateMultiPoint2D#

2차원 공간상에 MultiPoint 객체를 생성한다.

구문#

ACSRETURN ACSCreateMultiPoint2D(    ACSHENV          aHandle,
                                    stdGeometryType  * aBuffer,
                                    SQLLEN           aBufferSize,
                                    SQLUINTEGER      aNumPoints,
                                    stdPoint2DType   ** aPoints,
                                    SQLLEN           * aObjLength);

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aBuffer 출력 생성될 공간객체가 들어가는 버퍼를 가리키는 포인터
SQLLEN aBufferSize 입력 aBuffer변수의 최대 크기
SQLUINTEGER aNumPoints 입력 aPoints 에 저장된 Point 객체들의 갯수
stdPoint2DType ** aPoints 입력 MultiPoint 객체를 구성하는 Point 객체들을 가리키는 포인터들의 배열
SQLLEN * aObjLength 출력 생성된 공간객체의 크기를 리턴할 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

Point객체의 배열로 저장된 데이터를 입력 받아서 GEOMETRY타입의 MultiPoint 객체를 생성한다.

aBuffer가 NULL이라면 aObjLength에 생성된 객체의 크기만 넘겨준다,

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F5(332277) 버퍼공간부족 생성될 공간객체의 크기가 입력받은 버퍼의 크기보다 작을 경우
0x511F8(332280) 입력범위 오류 입력된 값의 범위가 잘못된 경우. aNumPoints는 1보다 크거나 같아야한다.

관련 함수#

ACSCreatePoint2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/insertObject.cpp파일을 참고하기 바란다.

ACSCreateMultiLineString2D#

2차원 공간상에 MultiLineString 객체를 생성한다.

구 문#

ACSRETURN ACSCreateMultiLineString2D(
                         ACSHENV             aHandle,
                         stdGeometryType     * aBuffer,
                         SQLLEN              aBufferSize,
                         SQLUINTEGER         aNumLineStrings,
                         stdLineString2DType ** aLineStrings,
                         SQLLEN              * aObjLength );

인 자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aBuffer 출력 생성될 공간객체가 들어가는 버퍼를 가리키는 포인터
SQLLEN aBufferSize 입력 aBuffer변수의 최대 크기
SQLUINTEGER aNumLineStrings 입력 aLineStrings 에 저장된 LineString객체들의 개수
stdLineString2DType ** aLineStrings 입력 MultiLineString 객체를 구성하는 LineString 객체들을 가리키는 포인터들의 배열
SQLLEN * aObjLength 출력 생성된 공간객체의 크기를 리턴할 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

LineString 객체의 배열로 저장된 데이터를 입력 받아서 GEOMETRY타입의 MultiLineString 객체를 생성한다.

aBuffer가 NULL이라면 aObjLength에 생성된 객체의 크기만 넘겨준다,

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F5(332277) 버퍼공간부족 생성될 공간객체의 크기가 입력받은 버퍼의 크기보다 클 경우
0x511F8(332280) 입력범위 오류 입력된 값의 범위가 잘못된 경우. aNumLineStrings는 1보다 크거나 같아야한다.

관련 함수#

ACSCreateLineString2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/insertObject.cpp파일을 참고하기 바란다.

ACSCreateMultiPolygon2D#

2차원 공간상에 MultiPolygon 객체를 생성한다.

구문#

ACSRETURN ACSCreateMultiPolygon2D( ACSHENV            aHandle,
                                   stdGeometryType    * aBuffer,
                                   SQLLEN             aBufferSize,
                                   SQLUINTEGER        aNumPolygons,
                                   stdPolygon2DType   ** aPolygons,
                                   SQLLEN             * aObjLength );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aBuffer 출력 생성될 공간객체가 들어가는 버퍼를 가리키는 포인터
SQLLEN aBufferSize 입력 aBuffer변수의 최대 크기
SQLUINTEGER aNumPolygons 입력 aPolygons 에 저장된 Polygon객체들의 개수
stdPolygon2DType ** aPolygons 입력 Multi Polygon 객체를 구성하는 Polygon 객체들을 가리키는 포인터들의 배열
SQLLEN * aObjLength 출력 생성된 공간객체의 크기를 리턴할 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

Polygon 객체의 배열로 저장된 데이터를 입력 받아서 GEOMETRY타입의 MultiPolygon 객체를 생성한다.

aBuffer가 NULL이라면 aObjLength에 생성된 객체의 크기만 넘겨준다,

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F5(332277) 버퍼공간부족 생성될 공간객체의 크기가 입력받은 버퍼의 크기보다 클 경우
0x511F8(332280) 입력범위 오류 입력된 값의 범위가 잘못된 경우. aNumLineStrings는 1보다 크거나 같아야한다.

관련 함수#

ACSCreatePolygon2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/insertObject.cpp파일을 참고하기 바란다.

ACSCreateGeomCollection2D#

2차원 공간상에 Geometry Collection 객체를 생성한다.

구문#

ACSRETURN ACSCreateGeomCollection2D( ACSHENV              aHandle,
                                     stdGeometryType      * aBuffer,
                                     SQLLEN               aBufferSize,
                                     SQLUINTEGER          aNumGeometries,
                                     stdGeometryType      ** aGeometries,
                                     SQLLEN               * aObjLength);

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aBuffer 출력 생성될 공간객체가 들어가는 버퍼를 가리키는 포인터
SQLLEN aBufferSize 입력 aBuffer변수의 최대 크기
SQLUINTEGER aNumGeometries 입력 aGeometries에 저장된 Geometry 객체들의 개수
stdGeometryType ** aGeometries 입력 Geometry Collection 객체를 구성하는 Geometry 객체들을 가리키는 포인터들의 배열
SQLLEN * aObjLength 출력 생성된 공간객체의 크기를 리턴할 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

GEOMETRY객체의 배열로 저장된 데이터를 입력 받아서 Geometry Collection 타입의 객체를 생성한다.

aBuffer가 NULL이라면 aObjLength에 생성된 객체의 크기만 넘겨준다,

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F5(332277) 버퍼공간부족 생성될 공간객체의 크기가 입력받은 버퍼의 크기보다 클 경우
0x511F8(332280) 입력범위 오류 입력된 값의 범위가 잘못된 경우. aNumLineStrings는 1보다 크거나 같아야한다.

관련 함수#

ACSCreatePoint2D
ACSCreateLineString2D
ACSCreatePolygon2D
ACSCreateMultiPoint2D
ACSCreateMultiLineString2D
ACSCreateMultiPolygon2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/insertObject.cpp파일을 참고하기 바란다.

객체 검색 함수#

ACSGetGeometryType#

공간 객체의 타입을 얻어온다.

구 문#

ACSRETURN ACSGetGeometryType(   ACSHENV            aHandle,
                                stdGeometryType    * aGeometry,
                                stdGeoTypes        * aGeoType );

인 자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aGeometry 입력 공간객체를 가리키는 포인터
stdGeoTypes * aGeoType 출력 입력된 공간객체의 타입을 받아올 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

공간객체의 타입을 얻어온다.

공간객체의 타입은 다음 중 하나이다.

typedef enum stdGeoTypes
{
    STD_UNKNOWN_TYPE                = 0,
    STD_POINT_2D_TYPE               = 2001,
    STD_LINESTRING_2D_TYPE          = 2003,
    STD_POLYGON_2D_TYPE             = 2005,
    STD_MULTIPOINT_2D_TYPE          = 2011,
    STD_MULTILINESTRING_2D_TYPE     = 2013,
    STD_MULTIPOLYGON_2D_TYPE        = 2015,
    STD_GEOCOLLECTION_2D_TYPE       = 2020,
    STD_NULL_TYPE                   = 9990,  // Null Geometry Object
    STD_EMPTY_TYPE                  = 9991   // Empty Geometry Object
} stdGeoTypes;

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다.

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetGeometrySize#

공간객체가 차지하는 공간의 크기를 얻어온다.

구 문#

ACSRETURN ACSGetGeometrySize(   ACSHENV            aHandle,
                                stdGeometryType    * aGeometry,
                                SQLLEN             * aGeomSize );

인 자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aGeometry 입력 공간객체를 가리키는 포인터
SQLLEN * aGeomSize 출력 입력된 공간객체가 차지하는 공간의 크기를 받아올 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

공간객체가 차지하는 공간의 크기를 얻어온다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다
0x511FB(332283) 지원하지 않는 공간객체 입력된 공간객체의 타입은 이 함수에서 지원하지 않는다.

예제#

ACSHENV             sAcsEnv;
stdGeometryType * sSubObj;
SQLLEN              sGeomSize;
…
if( ACSGetGeometryType( sAcsEnv, sSubObj, & sGeomSize ) 
== ACS_SUCCESS )
{
printf( "Geometry Size = %d\n", sGeomSize );    
}
else
{
    exit(-1);
}

ACSGetGeometrySizeFromWKB#

공간객체가 차지할 공간의 크기를 얻어온다. 이 함수는 WKB 형식으로 표현된 공간 객체를 GEOMETRY객체 타입으로 변환하기 전에 사용한다.

구 문#

ACSRETURN ACSGetGeometrySizeFromWKB(
                              ACSHENV             aHandle,
                              SQLCHAR             * aWKB,
                              SQLUINTEGER         aWKBLength,
                              SQLLEN              * aSize );

인 자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
SQLCHAR * aWKB 입력 WKB 형식의 공간객체 스트링
SQLUINTEGER aWKBLength 입력 aWKB의 bytes길이
SQLLEN * aSize 출력 GEOMETRY 객체가 차지하게 될 공간의 크기를 받아올 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

공간객체가 차지할 공간의 크기를 얻어온다. 이 함수는 WKB 형식으로 표현된 공간 객체를 GEOMETRY객체 타입으로 변환하기 전에 사용한다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x511FC(332284) 잘못된 WKB 입력된 WKB형식의 공간객체가 유효하지 않다

예제#

ACSHENV            sAcsEnv;
SQLCHAR          * sWKB;
SQLUINTEGER        sWKBLength;
SQLLEN             sSize;
…
if( ACSGetGeometryType( sAcsEnv, sWKB, sWKBLength, & sSize ) 
    == ACS_SUCCESS )
{
    printf( "Geometry Size = %d\n", sSize );
}
else
{
    exit(-1);
}

ACSGetNumGeometries#

다수의 공간객체로 구성되는 MultiPoint, MultiLineString, MutiPolygon, GeometryCollection과 같은 공간객체에서 자식 요소(공간객체)의 개수를 얻어온다.

구문#

ACSRETURN ACSGetNumGeometries( ACSHENV          aHandle,
                              stdGeometryType   * aGeometry,
                              SQLUINTEGER       *aNumGeometries);

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aGeometry 입력 공간객체를 가리키는 포인터
SQLUINTEGER * aNumGeometries 출력 입력된 Collection객체를 구성하고 공간객체의 개수를 받아올 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

다수의 공간객체로 구성되는 MultiPoint, MultiLineString, MutiPolygon, GeometryCollection과 같은 공간객체에서 자식 요소(공간객체)의 갯수를 얻어온다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다
0x511FB(332283) 지원하지 않는 공간객체 입력된 공간객체의 타입은 이 함수에서 지원하지 않는다.

관련 함수#

ACSGetGeometryN

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetGeometryN#

다수의 공간객체로 구성되는 MultiPoint, MultiLineString, MutiPolygon, GeometryCollection과 같은 공간객체에서 N번째 자식 요소(공간객체)를 얻어온다.

구문#

ACSRETURN ACSGetGeometryN( ACSHENV           aHandle,
                           stdGeometryType   * aGeometry, 
                           SQLUINTEGER       aNth,
                            stdGeometryType  ** aSubGeometry );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aGeometry 입력 공간객체를 가리키는 포인터
SQLUINTEGER aNth 입력 얻고자 하는 하위 공간객체의 순번. 1부터 시작한다.
stdGeometryType ** aSubGeometry 출력 자식 요소(공간객체)를 받아올 버퍼를 가리키는 포인터를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

다수의 공간객체로 구성되는 MultiPoint, MultiLineString, MutiPolygon, GeometryCollection과 같은 공간객체에서 N번째 자식 요소(공간객체)를 얻어온다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다.
0x511F8(332280) 입력범위 오류 입력된 값이 유효하지 않다. aNth는 1이상이고 aGeometry를 구성하는 자식 요소(공간객체)의 개수 이하이어야 한다.
0x511FB(332283) 지원하지 않는 공간객체 입력된 공간객체의 타입은 이 함수에서 지원하지 않는다.

관련 함수#

ACSGetNumGeometries

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetExteriorRing2D#

Polygon 객체내의 외부링(Exterior Ring)을 반환한다.

구문#

ACSRETURN ACSGetExteriorRing2D(
                         ACSHENV            aHandle,
                         stdPolygon2DType   * aPolygon,
                         stdLinearRing2D    ** aLinearRing );

인 자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdPolygon2DType * aPolygon 입력 대상이 되는 폴리곤객체를 가리키는 포인터
stdLinearRing2D ** aLinearRing 출력 반환되는 ExteriorRing을 저장할 버퍼를 가리키는 포인터를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

Polygon객체내의 외부링(Exterior Ring)을 반환한다. 외부링은 Polygon객체의 최외곽의 LinearRing이고 Polygon객체는 단 한개의 외부링을 갖는다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수 인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다.
0x511FB(332283) 지원하지 않는 공간객체 입력된 공간 객체의 타입은 이 함수에서 지원하지 않는다. aPolygon의 타입은 무조건 STD_POLYGON_2D_TYPE이여야한다.

관련 함수#

ACSGetNumInteriorRing2D
ACSGetInteriorRingNPolygon2D
ACSGetNumPointsLinearRing2D
ACSGetPointsLinearRing2D
ACSGetPointNLinearRing2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetNumInteriorRing2D#

Polygon객체내의 내부링(InteriorRing)의 갯수를 구한다..

구문#

ACSRETURN ACSGetNumInteriorRing2D( ACSHENV          aHandle,
                                   stdPolygon2DType * aPolygon,
                                   SQLUINTEGER      * aNumInterinor );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdPolygon2DType * aPolygon 입력 대상이 되는 폴리곤객체를 가리키는 포인터
SQLUINTEGER * aNumInterior 출력 InteriorRing의 개수를 받아올 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

Polygon객체내의 내부링(InteriorRing)의 갯수를 구한다. Polygon은 0개 이상의 내부링을 가진다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다.
0x511FB(332283) 지원하지 않는 공간객체 입력된공간객체의 타입은 이 함수에서 지원하지 않는다.

관련 함수#

ACSGetExteriorRing2D,
ACSGetInteriorRingNPolygon2D
ACSGetNumPointsLinearRing2D
ACSGetPointsLinearRing2D
ACSGetPointNLinearRing2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetInteriorRingNPolygon2D#

Polygon객체내의 N번째 내부링(InteriorRing)을 구한다.

구문#

ACSRETURN ACSGetInteriorRingNPolygon2D(
                         ACSHENV            aHandle,
                         stdPolygon2DType   * aPolygon,
                         SQLUINTEGER        aNth,
                         stdLinearRing2D    ** aLinearRing );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdPolygon2DType * aPolygon 입력 대상이 되는 폴리곤객체를 가리키는 포인터
SQLUINTEGER aNth 입력 얻을 내부링의 순번
stdLinearRing2D ** aLinearRing 출력 반환되는 내부링을 받아올 버퍼를 가리키는 포인터를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

Polygon객체내의 N번째 내부링(InteriorRing)을 구한다. Polygon은 0개 이상의 내부링을 가질 수 있다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다.
0x511F8(332280) 입력범위 오류 입력된 값이 유효하지 않다. aNth는 1이상이고, aPolygon을 구성하는 내부링의 개수 이하이어야 한다.
0x511FB(332283) 지원하지 않는 공간객체 입력된 공간 객체의 타입이 이 함수에서 지원하지 않는다.

관련 함수#

ACSGetExteriorRing2D
ACSGetNumInteriorRing2D
ACSGetNumPointsLinearRing2D
ACSGetPointsLinearRing2D
ACSGetPointNLinearRing2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetNumPointsLineString2D#

LineString객체를 구성하는 Point의 개수를 구한다.

구문#

ACSRETURN ACSGetNumPointsLineString2D(
                          ACSHENV               aHandle,
                          stdLineString2DType   * aLineString,
                          SQLUINTEGER           * aNumPoints );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들의 포인터
stdLineString2DType * aPolygon 입력 대상이 되는 LineString객체 포인터
SQLUINTEGER* aNumPoints 출력 Point의 개수를 받아올 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

LineString객체를 구성하는 Point의 개수를 구한다. LineString을 구성하는 Point는 최소 2개이상이다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다.
0x511FB(332283) 지원하지 않는 공간객체 입력된 공간객체의 타입이 이 함수에서 지원하지 않는다.

관련 함수#

ACSGetPointsLineString2D
ACSGetPointNLineString2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetPointNLineString2D#

LineString객체를 구성하는 Point중 N번째 것을 얻어온다.

구문#

ACSRETURN ACSGetPointNLineString2D(
                          ACSHENV               aHandle,
                          stdLineString2DType   * aLineString,
                          SQLUINTEGER           aNth, 
                          stdPoint2D            * aPoint );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdLineString2DType * aPolygon 입력 대상이 되는 LineString객체 포인터
SQLUINTEGER aNth 입력 얻을 Point의 순번
stdPoint2D * aPoint 출력 반환되는 Point를 받아올 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

LineString객체를 구성하는 Point 중 N번째 것을 얻어 온다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다.
0x511F8(332280) 입력범위 오류 입력된 값이 잘못되었다. aNth는 1 이상이고 LineString객체를 구성하는 Point의 개수 이하이어야 한다.
0x511FB(332283) 지원하지 않는 공간객체 입력된 공간객체의 타입이 이 함수에서 지원하지 않는다.

관련 함수#

ACSGetNumPointsLineString2D
ACSGetPointsLineString2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetPointsLineString2D#

LineString객체를 구성하는 Points배열을 얻어온다.

구문#

ACSRETURN ACSGetPointsLineString2D( ACSHENV               aHandle,
                                    stdLineString2DType   * aLineString,
                                    stdPoint2D            ** aPoints );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdLineString2DType * aPolygon 입력 대상이 되는 LineString객체 포인터
stdPoint2D ** aPoints 출력 얻어 올 Points를 담을 버퍼를 가리키는 포인터를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

LineString객체를 구성하는 Points 배열을 얻어온다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다.
0x511FB(332283) 지원하지 않는 공간 객체 입력된 공간 객체의 타입을 이 함수에서 지원하지 않는다.

관련 함수#

ACSGetNumPointsLineString2D
ACSGetPointNLineString2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetNumPointsLinearRing2D#

LinearRing객체를 구성하는 Point의 개수를 구한다.

구문#

ACSRETURN ACSGetNumPointsLinearRing2D(
                          ACSHENV               aHandle,
                          stdLinearRing2DType   * aLinearRing,
                          SQLUINTEGER           * aNumPoints );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdLinearRing2DType * aPolygon 입력 대상이 되는 LinearRing객체 포인터
SQLUINTEGER* aNumPoints 출력 Point의 개수를 받는 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

LinearRing객체를 구성하는 Point의 개수를 구한다. LinearRing을 구성하는 Point는 최소 2개 이상이다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다.
0x511FB(332283) 지원하지 않는 공간객체 입력된 공간 객체의 타입이 이 함수에서 지원하지 않는다.

관련 함수#

ACSGetPointsLinearRing2D
ACSGetPointNLinearRing2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetPointNLinearRing2D#

LinearRing객체를 구성하는 Point중 N번째 것을 얻어온다.

구문#

ACSRETURN ACSGetPointNLinearRing2D( ACSHENV               aHandle,
                                    stdLinearRing2DType   * aLinearRing,
                                    SQLUINTEGER           aNth, 
                                    stdPoint2D            * aPoint );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdLinearRing2DType * aPolygon 입력 대상이 되는 LinearRing객체 포인터
SQLUINTEGER aNth 입력 얻을 Point의 순번
stdPoint2D * aPoint 출력 얻어 올 Point를 담을 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

LinearRing객체를 구성하는 Point중 N번째 것을 얻어온다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간객체 입력된 공간객체가 유효하지 않은 값이다.
0x511F8(332280) 입력범위 오류 입력된 값이 잘못되었다. aNth는 1이상이고 LinearRing 객체를 구성하는 Point의 개수 이하이어야 한다.
0x511FB(332283) 지원하지 않는 공간 객체 입력된 공간 객체의 타입이 이 함수에서 지원하지 않는다.

관련 함수#

ACSGetNumPointsLinearRing2D
ACSGetPointsLinearRing2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

ACSGetPointsLinearRing2D#

LineString객체를 구성하는 Points배열을 얻어온다.

구문#

ACSRETURN ACSGetPointsLineString2D( ACSHENV               aHandle,
                                    stdLineString2DType   * aLineString,
                                    stdPoint2D            ** aPoints );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdLineString2DType * aPolygon 입력 대상이 되는 LineString객체 포인터
stdPoint2D ** aPoints 출력 얻어 올 Points를 담을 버퍼를 가리키는 포인터를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

LineString객체를 구성하는 Points배열을 얻어온다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간 객체 입력된 공간객체가 유효하지 않은 값이다.
0x511FB(332283) 지원하지 않는 공간 객체 입력된 공간 객체의 타입이 이 함수에서 지원하지 않는다.

관련 함수#

ACSGetNumPointsLineString2D
ACSGetPointNLineString2D

예제#

$ALTIBASE_HOME/sample/SPATIAL/selectObject.cpp파일을 참고하기 바란다.

Endian 함수#

ACSEndian#

공간 객체의 Endian을 강제로 변환한다.

구문#

ACSRETURN ACSEndian(     ACSHENV               aHandle,
                         stdGeomeryType        * aGeometry );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType * aGeometry 입출력 대상이 되는 객체 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

공간 객체의 Endian을 강제로 변환한다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 데이터 타입 입력된 공간객체가 유효하지 않은 값이다.

관련 함수#

ACSAdjustBytOrder

ACSAdjustByteOrder#

공간 객체의 Endian을 해당 플랫폼과 동일하게 변환시킨다..

구문#

ACSRETURN ACSAdjustByteOrder( ACSHENV              aHandle,
                              stdGeomeryType       * aGeometry );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType* aGeometry 입출력 대상이 되는 객체 포인터

결과값#

ACS_SUCCESS
ACS_INVALID_HANDLE
ACS_ERROR

설명#

공간 객체의 Endian(즉 byte order)을 해당 플랫폼에 맞게 변환시킨다. 클라이언트 호스트의 ByteOrder와 공간객체의 ByteOrder가 다르면, 공간 객체의 ByteOrder를 클라이언트에 맞도록 변환시키고, 동일하면 변환 작업작업을 수행하지 않는다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간 객체 입력된 공간객체가 유효하지 않은 값이다.

관련 함수#

ACSEndian

ACSGetGeometrySRID#

공간 객체의 Endian을 해당 플랫폼과 동일하게 변환시킨다..

구문#

ACSRENTURN ASCGetGeometrySRID( ACSHENV aHandle,
                               stdGeometryType * aGeometry,
                               SQLINTEGER * aSRID );

인자#

자료유형 인자 사용 설명
ACSHENV aHandle 입력 환경 핸들
stdGeometryType* aGeometry 입력 공간객체를 가리키는 포인터
SQLINTEGER * aSRID 출력 입력된 공간객체의 SRID를 받아올 버퍼를 가리키는 포인터

결과값#

ACS_SUCCESS
ACS_ERROR

설명#

공간 객체의 SRID를 가져온다.

진단#

함수가 ACS_ERROR를 리턴한 경우 ACSError에서 얻은 정보로 어떤 에러인지 확인할 수 있다.

ErrorCode 설명 부연설명
0x5101C(331804) 널파라미터 함수인자가 NULL일 경우
0x511F9(332281) 잘못된 공간 객체 입력된 공간객체가 유효하지 않은 값이다.

예제#

ACSHENV sAcsEnv;
stdGeometryType * sSubObj;
SQLINTEGER sSRID;
...
if ( ACSGetGeometrySRID( sAcsEnv, sSubObj, &sSRID ) == ACS_SUCCESS )
{
    printf( "SRID=%d\n", sSRID );
}
else
{
    exit(-1);
}