2009-08-11 2 views
1

사용자 지정 ArcGIS Desktop 도구 프로젝트에서 작업 중이며 자동화 된 선형 참조 기능을 구현하고 싶습니다. 긴 이야기를 짧게 만들기 위해 경로를 따라 문제가되는 세그먼트를 표시하고 색상 코드 (예 : 녹색, 노란색, 빨간색 등)를 사용하여 심각도를 표시하고 싶습니다. 나는 이것이 꽤 일반적인 시나리오이며,이 작업을 수행하는 "올바른 방법"이 특정 경로 세그먼트에 다른 코드를 할당 할 수있는 선형 이벤트 테이블을 만드는 것이라는 것을 이해하게되었습니다. 동료 중 일부는 수동으로 수행하는 방법을 알고 있지만이 프로그래밍 방식을 복제 할 수있는 방법을 찾을 수 없습니다.ArcGIS에서 선형 참조를 수행하는 프로그래밍 방식

현재 도구는 C#으로 작성되었으며 문제 영역을 결정하는 데 필요한 모든 계산을 이미 수행합니다. 문제는 주로 ArcObjects에 대해 많이 알지 못하기 때문에 어디에서 시작해야할지 모르겠다는 것입니다. 모든 코드 샘플 또는 제안을 환영합니다 (C#이 선호되지만 C++, VB 및 기타는 확실하게 나를 도울 것입니다).

편집 : 나는 MakeRouteEventLayer 도구를 사용하는 것을 시도하고 있지만, 다른 사전 조건이 충족 얻이 수없는 것

. 경로는 SDE 서버에서 호스팅됩니다.

ESRI.ArcGIS.esriSystem.IPropertySet pConnectionProperties = new ESRI.ArcGIS.esriSystem.PropertySet(); 
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory pWorkspaceFactory; 
ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace; 
ESRI.ArcGIS.Location.ILocatorManager pLocatorManager; 
ESRI.ArcGIS.Location.IDatabaseLocatorWorkspace pDatabaseLocatorWorkspace; 

pConnectionProperties.SetProperty("server", "xxxx"); 
pConnectionProperties.SetProperty("instance", "yyyy"); 
pConnectionProperties.SetProperty("database", "zzzz"); 
pConnectionProperties.SetProperty("AUTHENTICATION_MODE", "OSA"); 
pConnectionProperties.SetProperty("version", "dbo.DEFAULT"); 

pWorkspaceFactory = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactory(); 
pWorkspace = pWorkspaceFactory.Open(pConnectionProperties, 0); 
pLocatorManager = new ESRI.ArcGIS.Location.LocatorManager(); 
pDatabaseLocatorWorkspace = (ESRI.ArcGIS.Location.IDatabaseLocatorWorkspace)pLocatorManager.GetLocatorWorkspace(pWorkspace); 

가 지금은 MakeRouteEventLayer의 constructor에 대한 모든 것을 준비하기 위해 노력하고 붙어 있어요 : 지금까지, 나는 연결이 방법을 확립하고있다. 나는 기능 레이어입력 경로 기능으로 전달해야하는 방법을 찾지 못하는 것 같습니다. 또한 이벤트 테이블을 올바르게 작성하는 방법을 이해하지 못합니다. 나는 내가 문서화/주석 처리되지 않았고 데이터 유형이 언급되지 않았기 때문에 내가 이해하지 못하는 this one을 제쳐두고 성취하고자하는 것에 관한 어떤 예를 찾을 수없는 것 같다.

답변

1

나는 그것이 무엇을하고 싶은지 완전히 확신하지 못합니다. 선형 참조 값을 얻고 싶거나 이미 선형 참조가 정의되어있는 피쳐 클래스에서 직접 조작하려는 경우에는 매우 간단합니다.

IFeatureClass fc = ....; IFeature 기능 = fc.GetFeature (...); IMSegmentation3 seg = (IMSegmentation3) feature; ... 짧게 ...

선형 참조를 사용하여 피쳐 클래스를 생성해야하는 경우, ArcToolbox의 "지오 프로세싱"도구로 시작해야합니다. 기본 도구가 필요한 것 대부분을 수행 할 수 있다면 코딩을 최소화 할 수 있습니다.

강력하게은 가능한 경우 ArcMap으로 수행해야하는 작업을 파악하고 ArcObjects를 취소하는 것이 좋습니다.

  1. Linear Referencing API
  2. Linear Referencing Toolbox
  3. Understanding Linear Referencing
+0

매우 유익한 답변, 감사합니다! –