프로그래밍 방식으로 ArcGIS Layer (*. lyr) 파일 버전 결정


10

IStorage, Microsoft Compound File Spec, ArcObjects deserialization 등을 통해 .lyr 파일 버전을 감지하려고했습니다.

ArcObject를 사용하면 Layer 속성, 데이터 소스, 범위 등을 얻을 수 있지만 LayerFileClass의 documentVersion 속성은 항상 9.3 Layer 파일에서 'esriArcGISVersion10'을 다시보고합니다.

ILayerFile l = new LayerFileClass();
l.Open(fileName);
LayerFileClass t = (LayerFileClass)l;
string version = t.DocumentVersion.ToString();

도움을 주시면 감사하겠습니다.

2007 년 의이 거친 포럼 게시물에 주목 하십시오 .


.NET과 java에서 다른 결과를 얻습니까?
Kirk Kuykendall

1
LayerFileClass 대신 MemoryBlobStreamClass를 사용해 보셨습니까? IMemoryBlobStream.LoadFromFile을 사용하여 lyr 파일을 연 다음 IDocumentVersion으로 캐스트하십시오.
Kirk Kuykendall

RE comment 2 : 방금 시도했습니다-8.3, 9 / 9.1, 9.2 및 9.3 레이어 파일에 대해 esriArcGISVersion10을 얻습니다. RE 의견 1 : 자바 ....? 그게 뭐야? ;) 당신의 도움을 주셔서 감사합니다. 나는 그것이 가능하지 않다고 생각합니다.
valveLondon

.lyr 파일 버전을 감지하려는 이유를 이해하면 도움이 될 것입니다.
Stephen Quan

1
버전이 무엇인지 알고 싶습니다.
Valve 런던

답변:


6

레이어 파일이로드되면 파일을 열면 현재 버전이 업그레이드됩니다. DocumentVersion 속성은 LayerFile 클래스를 사용하여 이전 버전으로 다시 저장할 버전을 설정하기 위해서만 존재합니다.

실제 문서 버전은 레이어 파일에 기록되지 않습니다. 작성된 유일한 버전 정보는 오브젝트의 내부 지속성 버전입니다. 이 정보는 구조적 스토리지를 통해 추출 할 수 있지만 가능한 모든 레이어 유형에 대해이 버전 번호를 조회해야합니다 (레이어 유형을 알려면 레이어 유형 guid도 추출해야 함).


답변 주셔서 감사하지만 나는 그것에 의해 조금 길을 잃었다. '모든 가능한 레이어 유형'이란 무엇입니까? 8.3, 9 / 9.1, 9.2, 9.3, 10의 5 가지 버전이 있습니다.
valveLondon

레이어 유형에 따라 FeatureLayer, RasterLayer, GroupLayer 등을 의미합니다.
Craig Williams
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.