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);
}