2013-03-02 1 views
3

KML 파일을 지속적으로 작성/업데이트하는 프로그램이 있으며이 파일을 가리키는 네트워크 링크가 있습니다. 과부하 상태에서 내 프로그램이 KML 파일에 쓰는 것과 동시에 네트워크 링크가 KML 파일에 액세스하려고하면 Google 어스는 네트워크 링크의 자동 새로 고침을 중단합니다. 이 시점에서 Google 어스의 장소 패널에서 네트워크 링크를 마우스 오른쪽 버튼으로 클릭하고 새로 고침을 클릭하여 자동 업데이트가 다시 시작되어야합니다.파일 링크 오류가 발생한 후에도 강제로 네트워크 링크를 새로 고치는 방법?

제 질문은 '파일이 없습니다.'오류가 발생해도 Google 어스가 네트워크 링크를 계속 읽도록 할 수있는 방법이 있습니까? 수동으로 네트워크 링크를 다시 활성화해야하는 번거로운 작업이기 때문에 작업이 쉽게 자동화 될 수 있습니다.

필자는 KML 파일에 쓰기 작업에 소요되는 시간을 최소화하기 위해 프로그램 최적화에 많은 노력을 기울 였지만 실제적인 한계에 도달했으며 Google 내에서이 네트워크 링크 문제를 해결할 수있는 방법을 찾아야합니다 지구.

모든 답글, 의견 또는 토론에 큰 감사드립니다!

답변

0

간단한 트릭을 다음과 같이 대상 파일을 교환 임시 파일에 기록하는 서버에있는 파일을 작성하는 경우 :

  1. 쓰기 임시 파일 temp.kml
  2. 삭제 대상 .KML
  3. 이름 바꾸기 temp.kml target.kml

파일의 이름을 변경 Google 어스 클라이언트가 그것을 밖으로 교환되고있는 momemt를 가져옵니다 거의 instantenous 때문에 매우 어려울 것입니다. 서버의 OS에 따라 기호 연결을 사용하여 한 번에 파일 참조를 변경할 수도 있습니다.

업데이트 : 파일을 쓰는 것이 무엇이든간에 공유 변수에 파일 이름을 설정하고 현재 파일에 대한 스트림을 여는 "servlet"을 통해 해당 파일을 제공 할 수 있습니까? 네트워크 링크는 정적 KML 파일이 아닌 서블릿을 가리킬 수 있습니다.

+0

나는 이미 시스템을 구축하고, 스왑 동안 가져 오는 가능성을 감소하면서, 아직 일이 ... – user1710277

2

한참 전에 비슷한 문제가있었습니다. 구글 - 어스 KML 개발자 포럼 검색에서 몇 사람 때문에 같은 네트워크 링크 방식으로 네트워크 링크를 사용하여 권장 :

KML 업데이트의 KML 파일에 대한 링크 파일 1 :

<Document> 
<NetworkLink> 
<Link> my_URL_to_the_updating_kml 
<refreshMode>onInterval</refreshMode> 
<refreshInterval>my_Inteval</refreshInterval> 
</Link> 
<name>My_Name</name> 
<visibility>1</visibility> 
</NetworkLink> 
</Document> 
위의 네트워크 링크 파일에 대한 링크

KML 파일 2 :

<Document> 
<NetworkLink> 
<Link> 
my_URL_to_the_first_network_link_file 
<refreshMode>onInterval</refreshMode> 
<refreshInterval>3600</refreshInterval> 
</Link> 
<name>My_Name</name> 
<visibility>1</visibility> 
</NetworkLink> 
</Document> 
+0

나는이 접근법에 대해 전혀 생각하지 못했습니다. 단지 하나가 아닌 두 개의 데이지 체인 링크를 사용하면 얻을 수있는 이점을 설명 할 수 있습니까? – user1710277

+0

"내부 링크"(업데이트 kml 파일을 가리키는 네트워크 링크 파일) 새로 고침 간격은 "외부 링크"(내부 링크 kml 파일을 가리키는 네트워크 링크 파일)보다 짧은 간격으로 설정됩니다. –

+0

내부 링크가 멈 추면 (아마도 데이터 kml 파일이 업데이트 될 때 새로 고치려고하는 중일 때), 바깥 쪽 링크는 (결국) 내부 링크를 통해 새로 고침을 트리거합니다. –