ArcGIS Engine의 데이터 액세스

데이터는 GIS의 기초이고 데이터에 접근하는 것도 어떠한 복잡한 공간 분석과 공간 시각화 표현을 하는 전제 조건이다.ArcGIS가 지원하는 데이터 형식은 비교적 풍부하고 서로 다른 데이터 형식에 대한 지원 정도에도 큰 차이가 있다.이 문서는 주로 ArcGIS Engine에서 다음 8가지 데이터 형식을 액세스하는 방법에 대해 설명합니다.ArcGIS 데스크톱 응용에 대해 어느 정도 알고 있는 독자들은 본문을 읽기에 더욱 적합하다.본문의 예시 코드는 C#로 작성되었다.
   1. Shapefile
   2. Coverage
   3. Personal Geodatabase
   4. Enterprise Geodatabase
   5. Tin
   6. Raster
   7. CAD
   8. RDBMS
ArcGIS를 통해 데이터에 접근하기 전에 먼저'작업공간'이 무엇인지 명확히 해야 한다.ArcGIS에서 작업공간은 데이터가 저장되는 위치를 가리키며 ArcGIS가 데이터에 접근하는 메커니즘은 데이터에 대응하는 작업공간을 먼저 열고 작업공간으로 데이터에 접근하는 것이다.서로 다른 데이터 형식에 대해 작업 공간의 구체적인 상황도 다르기 때문에 다음에 각각 논술한다.
IAoInitialize pAoInit = new AoInitializeClass();
if (pAoInit.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB) == esriLicenseStatus.esriLicenseAvailable)
{                
	pAoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
}
pAoInit.Shutdown();

Shapefile
Shapefile은 파일 형식의 공간 데이터 형식으로 디스크에 공간 데이터와 속성 데이터를 저장합니다.다음 예제 코드는 D:\Data 폴더 아래에 있는 파일 이름이 Cities인 Shapefile 요소 클래스를 여는 것입니다.Shapefile에 있어 작업 공간은 바로 그것이 있는 폴더이다. 작업 공간을 열려면 대응하는 작업 공간 공장, 즉 Shapefile Workspace Factory Class를 사용해야 한다. 그리고 IWorkspace Factory의 OpenFrom File 방법을 사용하면 작업 공간을 얻을 수 있다. 이것은 디자인 모델에서 공장 방법의 구현이다.작업공간 공장의 열기 방법은 일반적인 의미의 작업공간을 되돌려주고 구체적인 데이터에 따라 인터페이스 변환을 해야 한다. Shapefile는 벡터 데이터이기 때문에 작업공간 인터페이스를 IFeatureWorkspace로 옮겨서 그 중의 요소류를 읽어야 한다. 이 점은 다음 몇 개의 데이터 형식에도 같은 열기 방식이다.
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
IFeatureWorkspace pFeatWS = pWorkspaceFactory.OpenFromFile(@"D:\Data\", 0) as IFeatureWorkspace;
//       
IFeatureClass pFeatureClass = pFeatWS.OpenFeatureClass("Cities");

Coverage
Coverage는 ArcInfo workstation의 기본 데이터 형식입니다.이 형식은 폴더를 기반으로 저장된 것으로 윈도우즈 자원 관리자에서 공간 정보와 속성 정보는 두 개의 폴더에 각각 저장되기 때문이다.coverage는 매우 성공적인 초기 지리 데이터 모델로 20여 년 동안 사용자들에게 인기가 많았고 많은 초기 데이터는 coverage 형식이었다.ESRI는 coverage 데이터 형식은 공개하지 않지만 coverage 형식으로 변환된 교환 파일(interchange file, 즉 E00)을 제공하고 데이터 형식을 공개합니다.그러나 ESRI는 3세대 데이터 모델인 지오데이터베이스(geodatabase)를 확산하기 위해 ArcGIS 8.3 버전부터 코베라지에 대한 편집 기능을 차단했다.coverage 형식의 데이터가 필요한 경우 ArcInfo workstation을 설치하거나 coverage 데이터를 다른 편집 가능한 데이터 형식으로 변환할 수 있습니다.Coverage는 하나 이상의 요소 클래스를 포함하는 컬렉션입니다.Coverage 데이터의 작업 공간도 해당 폴더입니다.Coverage는 여러 요소 클래스를 포함할 수 있기 때문에 작업 공간을 얻은 후에 구체적인 요소 클래스를 열 때'Coverage 이름: 요소 클래스 이름', 예를 들어 아래 코드의'basin:polygon'을 사용할 수 있다.
IWorkspaceFactory pFactory = new ArcInfoWorkspaceFactoryClass();
IWorkspace pWorkspace = pFactory.OpenFromFile(@"D:\ArcTutor\TopologyData", 0);
IFeatureWorkspace pFeatWorkspace = pWorkspace as IFeatureWorkspace;
IFeatureClass pFeatureClass = pFeatWorkspace.OpenFeatureClass("basin:polygon");

Personal Geodatabase
Geodatabase는 ArcGIS의 원본 데이터 형식으로서 제3세대 지리 데이터 모델의 장점을 많이 나타냈다.Personal Geodatabase는 Microsoft Access의 통합 스토리지 공간 데이터와 속성 데이터를 기반으로 합니다.ArcSDE는 대형 관계 데이터베이스 + ArcSDE를 통해 이루어지고 ArcSDE는 중간부품으로 관계 데이터베이스에 있는 일반 테이블을 공간 대상으로 전환시킨다.Personal Geodatabase 데이터의 작업 공간은 mdb라는 확장자를 가진 파일을 말합니다.다음은 몬토에 있는 열기입니다.mdb의 Water 요소 클래스 코드입니다.
IWorkspaceFactory pFactory = new AccessWorkspaceFactoryClass();
IWorkspace pWorkspace = pFactory.OpenFromFile(@"D:\ArcTutor\Monto.mdb", 0);
IFeatureWorkspace pFeatWorkspace = pWorkspace as IFeatureWorkspace;
IFeatureClass pFeatureClass = pFeatWorkspace.OpenFeatureClass("Water")

Enterprise Geodatabase
ArcSDE(Enterprise Geodatabase)에 대응하는 작업 공간은 데이터베이스 연결이고 관계 데이터베이스가 Oracle일 때 연결 매개 변수는 5개가 필요하다. 그것이 바로SERVER,INSTANCE,USER,PASSWORD,VERSION이다.SERVER는 서버의 호스트 이름을, INSTANCE는 서비스 이름이나 포트 번호를 가리키며, USER는 데이터베이스의 사용자 이름,PASSWORD 데이터베이스는 사용자의 비밀번호를, VERSION은 Enterprise Geodatabase 다중 버전 메커니즘 중의 한 버전을 가리키며, 기본적인 버전은'SDE.DEFAULT'이다. 만약에 관계 데이터베이스가 SQL Server라면 연결 파라미터는 데이터베이스 파라미터가 필요하다.다음은 Enterprise Geodatabase에서 ControlPoint 점 요소 클래스를 여는 코드입니다. 관계 데이터베이스는 Oracle9i입니다.
IWorkspaceFactory pWorkspaceFactory = new SdeWorkspaceFactoryClass();
IPropertySet propSet = new PropertySetClass();
propSet.SetProperty("SERVER", "actc");
propSet.SetProperty("INSTANCE", "5151");
propSet.SetProperty("USER", "apdm");
propSet.SetProperty("PASSWORD", "apdm");
propSet.SetProperty("VERSION", "SDE.DEFAULT");
IWorkspace pWorkspace = pWorkspaceFactory.Open(propSet, 0);
IFeatureWorkspace pFeatWS = pWorkspace as IFeatureWorkspace;
IFeatureClass pFeatureClass= pFeatWS.OpenFeatureClass("ControlPoint");

TIN
TIN은 모두 불규칙 삼각망이라고 하는데 불규칙 삼각 표면이라고도 부른다. 일련의 불규칙 삼각점을 이용하여 표면을 세운다.예를 들어 모든 샘플링 지점에는 x, y 좌표와 표면 값(z값)이 있는데 이 점들은 서로 중첩되지 않는 삼각형의 가장자리에 연결되어 하나의 표면을 구성한다.TIN 데이터는 공간 분석과 3차원 분석의 중요한 데이터 형식으로 파일 형식으로 디스크에 저장됩니다.TIN의 작업공간은 폴더이고 다음 코드는 D:\ArcTutor\3DAnalyst 폴더 아래 이름이mal인 TIN을 여는 것입니다.
IWorkspaceFactory pWSFact = new TinWorkspaceFactoryClass();
IWorkspace pWS = pWSFact.OpenFromFile(@"D:\ArcTutor\3DAnalyst\", 0);
ITinWorkspace pTinWS = pWS as ITinWorkspace;
ITin pTin = pTinWS.OpenTin("mal");

Raster
격자선 데이터도 GIS 데이터의 중요한 부분으로 ArcGIS에서 가장 많이 사용되는 파일 유형은 GRID, TIFF, ERDAS IMAGE 등이며 이 몇 가지 격자선 데이터의 작업 공간도 같은 폴더이다.그리드 데이터를 열 때 그리드 작업공간 공장(RasterWorkspaceFactory)을 사용하고 IRasterWorkspace 인터페이스의 그리드 데이터 집합을 열면 그리드 데이터 집합을 열 수 있습니다.격자선 데이터 세트를 열 때 데이터 형식이 ESRI GRID이면 OpenRasterDataset () 방법의 매개 변수는 격자선 요소 세트의 이름이고, 데이터 형식이 TIFF 형식이면 이 방법의 매개 변수는 완전한 파일 이름이며, 덧붙여야 한다.tif 확장자, 예를 들어 OpenRasterDataset(hillshade.tif)다음 코드는 GRID 형식을 여는 격자선 데이터입니다.
IWorkspaceFactory rasterWorkspaceFactory = new RasterWorkspaceFactoryClass();
IRasterWorkspace rasterWorkspace = rasterWorkspaceFactory.OpenFromFile(@"D:\data\grid", 0) as IRasterWorkspace;
IRasterDataset rasterDataset= rasterWorkspace.OpenRasterDataset("ca_hillshade");

CAD
CAD 데이터도 AO를 통해 직접 접근할 수 있고 CAD 데이터에 접근하는 방식은 Coverage와 유사하지만 CAD의 작업 공간 공장을 사용해야 한다. 다음은 dxf의 CAD 데이터를 열고 요소 클래스를 열 때'cad 파일 이름: 요소 클래스 이름'을 사용한다. 캐드 파일 이름은 확장명을 포함해야 하며 그렇지 않으면 오류가 발생할 수 있으니 주의해야 한다.다음 코드는 D:\ArcTutor\Editor\ExerciseData\EditingFeatures 폴더 아래의buildings를 엽니다.dxf의 다각형 요소류.
IWorkspaceFactory pCadwf = new CadWorkspaceFactoryClass();
IWorkspace pWS = pCadwf.OpenFromFile(@"D:\ArcTutor\Editor\ExerciseData\EditingFeatures", 0);
IFeatureWorkspace pCadFWS = pWS as IFeatureWorkspace;
IFeatureClass pFeatClass = pCadFWS.OpenFeatureClass("buildings.dxf:polygon");

RDBMS
일반 관계표의 데이터도 ArcGIS를 통해 직접 읽을 수 있기 때문에 데이터의 공유에 큰 편의를 제공한다. 일부 업무상의 비공간 데이터에 대해 OLE 방식을 사용하면 데이터 접근을 편리하게 할 수 있다. 업무 데이터는 각종 관계 데이터 라이브러리에 위치할 수 있고 아래 코드는 Microsoft Access에 있는 Custom 표에 접근할 수 있다.물론 Oralce나 SQL Server의 데이터에도 액세스할 수 있으며, 다음 연결 문자열(CONNECTSTRING)만 변경하면 됩니다.
//      
IPropertySet pPropset = new PropertySetClass();
pPropset.SetProperty("CONNECTSTRING", @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Company.mdb;Persist Security Info=False");
//      OleDB       
IWorkspaceFactory pWorkspaceFact;
IFeatureWorkspace pFeatWorkspace;pWorkspaceFact = new OLEDBWorkspaceFactoryClass();
pFeatWorkspace = pWorkspaceFact.Open(pPropset, 0) as IFeatureWorkspace;ITable pTTable = pFeatWorkspace.OpenTable("Custom");

이상은 ArcGIS에서 가장 자주 사용하는 몇 가지 데이터의 접근 방법으로 데이터를 방문하여 GIS 분석, 데이터 처리와 공간을 시각화할 수 있으며 데이터를 얻은 후에 데이터를 도면층에 추가할 수도 있고 데이터를 검색하거나 유지보수할 수도 있다.

좋은 웹페이지 즐겨찾기