2010-07-27 3 views
0

MapControl을 C++ 응용 프로그램에 임베드 할 예정입니다. 이 응용 프로그램은 독점적 인 비 관계형 데이터베이스에 연결됩니다. 따라서 맵 컨트롤을 GIS 데이터에 직접 연결하는 것은 불가능합니다. 대신 피쳐 레이어에 내 포인트 피처를로드하기 만하면됩니다. 필자는 피쳐 레이어를 만드는 메커니즘을 이해하지만 어떤 유형의 데이터 소스에 묶여있는 것처럼 보입니다. 파일이나 데이터베이스를 지정하지 않고 레이어에 직접 피쳐 데이터를로드하려면 어떻게해야합니까? 즉,이 기능은 메모리 상주에만 필요합니다.데이터베이스 또는 파일 대신 메모리에서 포인트 피처를 추가하려면 어떻게합니까?

답변

1

ScratchWorkspaceFactory 대신 InMemoryWorkspaceFactory을 사용합니다.

메모리 작업 공간에있는 featureclass에 대한 참조와 정보가 상징되는 방식을 정의하는 심볼로지 (IGeoFeatureLayer.Renderer)가 필요한 featurelayer가 여전히 필요합니다.

1

점만 표시하려면 피쳐 레이어를 사용하지 말고지도에 직접 그립니다. 예 : here

당신의 포인트는 데이터를 연결 한 경우, 당신은 (IFeatureClass.Insert를 통해) 기능 클래스로 특징로로드 및 기능 층에 기능 클래스를 첨부해야합니다. 이렇게하려면 먼저 자신 만의 피쳐 클래스를 만들어야합니다. 예제 코드 here.

이 예제에서는 형상을 저장하기 위해 ShapeFileWorkspaceFactory를 사용하여 디스크에 형상을 작성하지 않지만, 경우에 따라 ScratchWorkspaceFactory을 사용하여 ArcMap이 닫힐 때 플래시되는 임시 작업 메모리 내 작업 공간을 만들 수 있습니다.

링크 내의 다양한 프로그래밍 언어에 대한 사과, 그러나 나는 그들이 당신에게 몇 가지 출발점을 알려주기를 바랍니다.

+0

MarkerElements는 내가 시작한 곳이지만 클라이언트는이 지점을 선택하고 상호 작용할 수 있어야합니다. ScratchWorkspaceFactory를 사용해 보시고 다시 연락 드리겠습니다. 빠른 답변 감사합니다. – KRFournier

+0

귀하의 링크를 통해 원하는대로 코드 작업을 완료 할 수 있었지만 Kirk의 대답은 제가 찾고있는 것이 었습니다. 하드 드라이브 공간없이 포인트를 메모리에로드하려고했습니다. 스크래치 작업 영역은 임시 액세스 데이터베이스를 작성합니다. 그렇게 할 수 있다면 두 가지 게시물을 올바른 답으로 만들었을 것입니다. 신속하고 철저한 응답에 감사드립니다. – KRFournier

관련 문제