이 문서에는 Point, MultiPoint, Polyline, Polygon 등의 Topology 일관성에 관한 검증 규칙(Verification Rules)이 어떻게 적용되어야 하는지를 설명하고 있습니다.
ArcObjects Geometry API 중 ITopologicalOperator 인터페이스와도 관련이 있으니 함께 참조하시기 바랍니다.
▣ The verification rules for point shapes
* 포인트의 면적과 길이는 0.0으로 설정
* 단일 포인트의 Envelope은 포인트의 X, Y값으로 설정
* Multipart 포인트 shape의 envelope은 minimum bounding box로 설정
* Sample Code - MultiPoint
코드보기..
▣ Verification rules for simple lines or linestring shapes* 연속 중복점(Sequential duplicate points)은 제거
* 라인을 구성하는 각 part는 최소 고유한 두개 이상의 포인트로 구성되어야 함
* 각 part는 교차(intersect itself)하지 않음. 시작점과 끝점은 동일할 수 있으나 결과로 생기는 ring은 area shape으로 취급되지는 않음
* 각 part는 교차(intersect itself)하지 않음. 시작점과 끝점은 동일할 수 있으나 결과로 생기는 ring은 area shape으로 취급되지는 않음
* 라인을 구성하는 각각의 part는 끝점에서 touch될 수 있음
* 라인의 길이는 라인을 구성하는 모든 part의 합계임.
▣ Verification rules for lines or spaghetti shapes
* 라인을 구성하는 개별 라인들은 서로 교차(intersect themselves)할 수 있음
* 라인의 길이는 라인을 구성하는 모든 part의 합계임.
▣ Verification rules for lines or spaghetti shapes
* 라인을 구성하는 개별 라인들은 서로 교차(intersect themselves)할 수 있음
* 라인을 구성하는 각 part는 최소 고유한 두개 이상의 포인트로 구성되어야 함
* 연속 중복점(Sequential duplicate points)은 제거
* 라인의 길이는 라인을 구성하는 모든 part의 합계임.
▣ Verification rules and operations on area shapes
* 연속 중복점(Sequential duplicate points)은 제거
* Dangle은 삭제됨
* 라인 segment의 폐합을 검증(시작점과 끝점의 z-coordinates 역시 동일해야 함)하고 segment간 cross되어서는 안됨
* Hole이 있는 area shape에서 hole은 outer boundary 내에 완전히 포함되어야 함. ArcSDE는 outer boundary 밖에 있는 hole은 삭제함.
* Outer boundary와 단일 포인트를 공유하면서 touch되는 hole은 좌표 순서를 반대로 함
* 특정 포인트에서 touch하는 여러 holes(multiple holes)은 단일 hole로 combine된다.
* Multipart area shape은 overlap되어서는 안된다. 그러나 두 part간에는 단일 포인트에서 touch될 수 있다.
* Multipart area shape은 common boundary를 공유해서는 안되며, common boundary는 dissolve된다.
* 만약 2개의 ring이 common boundary를 공유하면 하나의 ring으로 merge된다.
* 도넛 폴리곤에서의 모든 hole의 boundary를 포함한 모든 geometry의 둘레를 계산하고, geometry의 길이로 둘레를 저장한다.
* 면적을 계산한다.
* Envelope을 계산한다.
* ArcSDE가 시계방향(clockwise)으로 구성된 좌표리스트를 반환하지만, 저장할 때는 반시계방향(counterclockwise)으로 저장한다. 만약 시계방향으로 좌표점이 구성된 area shape을 생성했을 때, ArcSDE 소프트웨어는 반시계방향을 구성하기 위해 좌표리스트의 방향을 바꾼다.
* 위 그림에서 시작점은 a이고 올바른 좌표 저장 순서는 a,b,c,d,a.
* Area shape은 역좌표순서를 가질 수 있는데 이는 area shape 내에 outer boundary와 touch되는 empty space가 있을 경우이다.
* 반대방향의 좌표목록을 가진 area shape은 outer boundary와 touch되는 interior ring을 가진 경우이며, 이는 도넛 폴리곤으로 간주되지는 않는다.
* Area shape이 도넛 hole을 가질 때, 우선 outer boundary의 좌표가 먼저 시작된다. hole의 좌표는 outer boundary의 반대방향으로 저장된다.
* 아래 그림에서, In the figure below, outer boundary는 a,b,c,d,a로, hole은 e,f,g,h,e로 구성된다. area shape의 좌표는 a,b,c,d,a,e,f,g,h,e 순서로 저장된다.
* hole을 가진 area shape에서 outer boundary는 항상 먼저 시작되고, 이후 hole이 정의된다.
* 만약 2개의 hole이 한 지점에서 touch되면 하나의 hole로 간주된다.
* 위 그림에서 2개의 inner area는 g 좌표를 공유하기 때문에 단일 hole이다.
* 아래 그림과 같이 Area shape과 hole을 가진 area shape의 조합은 complex shape이다. Outer boundary는 섬을 가진 호수이고 섬 안에는 작은 호수가 있는 구조이다.
* Area shape들이 중첩되어 있다.
* 이 피쳐는 하나, 둘, 3개의 shape으로 표현하는 것이 가능하다. 즉, 피쳐를 각각 분리해서 저장할 수 있다. 가장 큰 호수는 도넛 폴리곤이다. 가장 큰 호수의 경계는 outer boundary이고, 섬은 단일 도넛 hole의 boundary가 된다. 섬 또한 도넛 폴리곤이다. 섬의 boundary는 outer boundary이고 작은 호수는 hole이다. 작은 호수는 단일 area shape이다.
* 만약 호수가 가장 중요한 피쳐라면, 하나의 hole을 가진 첫번째 shape이 큰 호수를 나타내고, 두번째 shape은 작은 호수를 나타낸다. 또한 Multipart area shape을 사용하여 피쳐를 표현할 수 있다. 첫번째 shape part는 섬을 표현하는 도넛 hole을 가진 큰 호수이고, 두번째 part는 작은 호수이다.
* Nil shape은 placeholder 역할만을 수행하며, geometry가 없는 속성정보만 가진 row를 정의할 수 있다. Nil shape의 예는 다음 그림과 같이 교차하지 않는 2개의 shape간에 intersection을 요청했을 경우의 결과로 설명할 수 있다.
* 위 그림에서 A와 B는 touch 상태가 아니기 때문에 intersection query의 결과는 empty geometry를 반환한다.
* Shape은 'dimensions'을 가진다. x, y coordinates만 가진 shape은 2-dimensional, z coordinates나 measure 값을 가진 shape은 3-dimensional shape이다. shape은 또한 nil measure를 가질 수 있다.
* ArcSDE는 각 shape 유형별 룰을 적용하여 유효한 shape만 내부적으로 관리한다. shape의 생성 및 갱신에 사용되는 모든 ArcSDE 명령어는 이 룰을 사용한다.
※ 출처 : ArcSDE Developer Help - Shape Verification Rules
▣ Verification rules and operations on area shapes
* 연속 중복점(Sequential duplicate points)은 제거
* Dangle은 삭제됨
* 라인 segment의 폐합을 검증(시작점과 끝점의 z-coordinates 역시 동일해야 함)하고 segment간 cross되어서는 안됨
* Hole이 있는 area shape에서 hole은 outer boundary 내에 완전히 포함되어야 함. ArcSDE는 outer boundary 밖에 있는 hole은 삭제함.
* Outer boundary와 단일 포인트를 공유하면서 touch되는 hole은 좌표 순서를 반대로 함
* 특정 포인트에서 touch하는 여러 holes(multiple holes)은 단일 hole로 combine된다.
* Multipart area shape은 overlap되어서는 안된다. 그러나 두 part간에는 단일 포인트에서 touch될 수 있다.
* Multipart area shape은 common boundary를 공유해서는 안되며, common boundary는 dissolve된다.
* 만약 2개의 ring이 common boundary를 공유하면 하나의 ring으로 merge된다.
* 도넛 폴리곤에서의 모든 hole의 boundary를 포함한 모든 geometry의 둘레를 계산하고, geometry의 길이로 둘레를 저장한다.
* 면적을 계산한다.
* Envelope을 계산한다.
* ArcSDE가 시계방향(clockwise)으로 구성된 좌표리스트를 반환하지만, 저장할 때는 반시계방향(counterclockwise)으로 저장한다. 만약 시계방향으로 좌표점이 구성된 area shape을 생성했을 때, ArcSDE 소프트웨어는 반시계방향을 구성하기 위해 좌표리스트의 방향을 바꾼다.
* Area shape은 역좌표순서를 가질 수 있는데 이는 area shape 내에 outer boundary와 touch되는 empty space가 있을 경우이다.
* Area shape이 도넛 hole을 가질 때, 우선 outer boundary의 좌표가 먼저 시작된다. hole의 좌표는 outer boundary의 반대방향으로 저장된다.
* 아래 그림에서, In the figure below, outer boundary는 a,b,c,d,a로, hole은 e,f,g,h,e로 구성된다. area shape의 좌표는 a,b,c,d,a,e,f,g,h,e 순서로 저장된다.
* 만약 2개의 hole이 한 지점에서 touch되면 하나의 hole로 간주된다.
* 아래 그림과 같이 Area shape과 hole을 가진 area shape의 조합은 complex shape이다. Outer boundary는 섬을 가진 호수이고 섬 안에는 작은 호수가 있는 구조이다.
* 이 피쳐는 하나, 둘, 3개의 shape으로 표현하는 것이 가능하다. 즉, 피쳐를 각각 분리해서 저장할 수 있다. 가장 큰 호수는 도넛 폴리곤이다. 가장 큰 호수의 경계는 outer boundary이고, 섬은 단일 도넛 hole의 boundary가 된다. 섬 또한 도넛 폴리곤이다. 섬의 boundary는 outer boundary이고 작은 호수는 hole이다. 작은 호수는 단일 area shape이다.
* 만약 호수가 가장 중요한 피쳐라면, 하나의 hole을 가진 첫번째 shape이 큰 호수를 나타내고, 두번째 shape은 작은 호수를 나타낸다. 또한 Multipart area shape을 사용하여 피쳐를 표현할 수 있다. 첫번째 shape part는 섬을 표현하는 도넛 hole을 가진 큰 호수이고, 두번째 part는 작은 호수이다.
* Nil shape은 placeholder 역할만을 수행하며, geometry가 없는 속성정보만 가진 row를 정의할 수 있다. Nil shape의 예는 다음 그림과 같이 교차하지 않는 2개의 shape간에 intersection을 요청했을 경우의 결과로 설명할 수 있다.
* Shape은 'dimensions'을 가진다. x, y coordinates만 가진 shape은 2-dimensional, z coordinates나 measure 값을 가진 shape은 3-dimensional shape이다. shape은 또한 nil measure를 가질 수 있다.
* ArcSDE는 각 shape 유형별 룰을 적용하여 유효한 shape만 내부적으로 관리한다. shape의 생성 및 갱신에 사용되는 모든 ArcSDE 명령어는 이 룰을 사용한다.
※ 출처 : ArcSDE Developer Help - Shape Verification Rules
댓글 없음:
댓글 쓰기