ArcGIS 기능의 사용자 정의 구현


9

ArcGIS 함수의 사용자 정의 구현을 만드는 데 필요한 것이 무엇인지 알고 싶습니다. 특히 GeoAnalyst.ISurfaceOp2.Visibility () 를 구현 하여 더 빠르게 실행하고 싶습니다 . 현재 Visibility ()를 호출 할 때마다 ~ 3 초가 걸립니다. 제한적인 이해에서 병목 현상은 임시 래스터를 파일 시스템에 쓰는 것입니다. 이것이 인 메모리로 수행 될 수 있다면 처리 시간이 크게 줄어 듭니다. .NET 프로젝트 에서이 작업을 수행하고 있지만 모든 언어의 솔루션을 환영합니다.


왜 임시 래스터를 RAM 디스크에 기록하지 않았습니까? 그런 다음 자체 위험과 비용이 포함 된 가시성 op를 처음부터 코딩 할 필요가 없습니다.
whuber

그거 좋을 거 같아. 어떻게하면 될까요? 아래 답변에서 @Radar 상태가 불가능하지 않습니까?
로스 Fuhrman

4
시스템에 RAM 디스크 를 설치 합니다. 자세한 내용은 OS에 따라 다릅니다. 그런 다음 ArcGIS 스크래치 폴더를 가리 킵니다. 특히 래스터가 크거나 RAM이 많지 않은 경우 SSD를 사용하면 거의 잘 할 수 있습니다.
whuber

나는 RAM 디스크 아이디어를 좋아한다. SSD는 빠르게 마모 될 수 있으므로 지속적인 읽기 / 쓰기 작업에 적합하지 않기 때문에 위험합니다.
레이더

2
플래시 기반 SSD는 @Radar에서 1 ~ 5 백만 번의 쓰기에도 불구하고 DRAM SSD는 전혀 "마모되지"않습니다. 자세한 정보는 storagesearch.com 을 방문하십시오 .
whuber

답변:


5

이 답변은 의견의 일부 토론을 기념하고 확장합니다. RAM 디스크는 컴퓨팅 시스템의 RAM의 일부를 사용하여 외부 디스크 드라이브를 에뮬레이트합니다. 디스크 내 명령을 메모리 지향 명령으로 변환하는 변환 프로토콜의 오버 헤드를 뺀 메모리 내 캐싱과 비슷한 속도로 읽고 쓸 수 있습니다. RAM 디스크는 특수한 운영 체제 수준의 소프트웨어 인 "장치 드라이버"를 실행하여 생성됩니다. 오픈 소스 및 사용 가능한 RAM 디스크는 Windows를 포함한 많은 운영 체제에서 사용할 수 있습니다.

따라서 중간 디스크 I / O로 인해 병목 현상을 가속화하는 한 가지 방법 은 RAM 디스크를 설정하고 (필요한 경우 추가 RAM을 구입) 스크래치 폴더를 배치하는 것입니다. (일반적으로 소프트웨어 설정입니다.)

또 다른 옵션 은 디스크 드라이브처럼 작동하는 전자 인터페이스가있는 별도의 패키징에있는 RAM 블록 인 고급 DRAM SSD (Solid State Device )를 설치하는 것입니다. 디스크 드라이브 대신 컴퓨팅 시스템에 설치되며 추가 소프트웨어없이 다른 디스크 드라이브와 똑같이 작동하지만 메모리 액세스만큼 빠르게 읽고 쓸 수 있습니다. 이것들은 상대적으로 비싸지 만 매우 큰 중간 래스터 스토리지에도 작은 것만 필요합니다.

이러한 단계를 수행하기 전에 프로파일 링 하는 것이 중요 합니다병목 현상이 실제로 어디에 있는지 확인하는 프로세스. (Windows는 최근 몇 년간 점점 더 강력한 프로파일 링 및 모니터링 앱과 함께 제공되었으며 Win 7에서 작업 관리자 / 리소스 모니터 쌍으로 사용할 수 있으며 물론 다른 OS에서도 많은 유사한 앱을 사용할 수 있습니다.) 많은 시스템이 자동으로 구성되거나 RAM에서 디스크 읽기 및 쓰기를 캐시하기 위해 짧은 기간 동안 구성 할 수 있습니다. 캐싱은 RAM 디스크와 거의 동일하게 작동하지만 더 빠를 수도 있습니다. 소프트웨어는 중간 파일을 디스크에 쓰고 있다고 생각하지만 OS는 디스크에 액세스하지 않고 RAM에 임시로 먼저 기록합니다. 다시 읽고 삭제합니다.이 경우 실제 쓰기가 필요하지 않습니다.

완전한 가시성 계산에 필요한 계산량 (순진한 알고리즘에서 모든 셀은 각 관점마다 한 번씩 가시성을 검사해야 함)을 고려할 때 디스크 I / O가 아닌 컴퓨팅 속도가 문제가 될 수 있다고 의심해야합니다. 여기. 이 경우 RAM 디스크 또는 SSD는 시간과 비용을 낭비하게됩니다. 대신, 기본 알고리즘분석하고 개선 하기 위해 노력해야합니다 .

RAM 디스크 성능이 ArcGIS에 도움이되는지에 대한 일부 토론이 다른 스레드에 나타났습니다 .


+1 훌륭한 반응. GIS 직원은 그래픽 처리 장치 ( GPGPU) 의 일반적인 용도에주의를 기울여야한다고 생각합니다 . 대부분의 1 인칭 슈팅 게임은 GPU를 활용하여 슈팅 위치에서 물체의 가시성을 결정합니다. 이 문제 의 OpenCL 구현 을 보는 것이 좋습니다 . GIS가 GPU를 더 많이 사용한다면, 비디오 게임을하는 어린이들의 관심을 끌 수 있습니다.
커크 Kuykendall

또한 GPU는 ISurfaceOp2.Visibility와 비슷한 숨겨진 표면 결정 과 같은 작업을 수행하도록 최적화되어 있습니다.
커크 Kuykendall

좋은 아이디어, @Kirk. 매니 폴드는 NVIDIA GPU를 사용합니다 (몇 년 동안 그렇게했습니다). 이 분야에 대한 독립적 인 연구도 있습니다. GPU 기반지도 대수 구현을 개발하기위한 보조금 제안 노력의 일환이었습니다.
whuber

이것은 훌륭한 답변입니다. 제안 된 프로파일 링을 수행했으며 디스크 I / O 병목 현상 이있을 있습니다. 그래서 RAM 디스크를 사용하는 솔루션을 구현했습니다 (IMDisk를 선택했습니다). 결국 이것은 프로세스 완료 시간을 단축시키지 못했습니다.
Ross Fuhrman

개선이 없다 니 유감입니다. 가시성은 비용이 많이 드는 계산입니다. 원칙적으로 DEM의 모든 셀은 각 관찰자에 대해 검사되어야하며 검사 프로세스는 관찰자와 DEM 셀 사이의 전체 셀 라인을 봐야 할 수 있습니다. 겸손한 (메가 픽셀) 그리드에서도 관찰자. 계산 시간에 문제가있는 경우 다음 두 가지 최상의 옵션이 가능합니다. (1) 작업을 병렬화합니다. 워크 스테이션에 관찰자를 분할하고 가시성을 계산하며 결과를 결합합니다. (2) 자신의 가시성 코드를 작성하십시오.
whuber

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.