Bir Raster'den belirli bir mesafe ve yükseklik farkı içindeki tüm noktaları çıkarma


11

X, Y ve Z verilerinin tanımlandığı on milyonlarca nokta içeren bir tarama cihazım var. Birbirinden 720 m mesafede (X, Y) ve birbirinden 120 m yükseklik farkında (Z) TÜM noktaları olan yeni bir raster veya vektör çıkarmak ve oluşturmak için basit bir yol bulmalıyım.

SIFIR SQL ve Python bilgim var. Bunu VBA'da yapmaya çalışıyorum ve birkaç algoritma buldum, ancak işlem süresi mantıksız ve gerçekçi değil. Bunu başarmak için basit bir CBS yaklaşımı olması gerektiğinden eminim ama bulamıyor gibi görünüyor.

ArcMap kullanıyorum.


ArcMap kullanıyorum. Yorumun için teşekkürler. Orijinal soruda da değiştireceğim :).
user32882

Yatayda 720m ve dikeyde 120m diyorsunuz ama nereden? Bir tür nokta bulutunuz var gibi görünüyor, ancak bu buluttaki herhangi bir konumdan ölçütlerinizi tam olarak dolduran noktaları arayabilirsiniz. Şüphesiz bir tür tohum yerinize veya kriterleri tam olarak dolduran puanların sayısını en üst düzeye çıkarmak gibi bahsetmediğiniz başka bir kritere sahip olmalısınız?
Hornbydd

Dediğim gibi "TÜM noktaları birbirinden 720 m (X, Y) ve 120 m yükseklik farkından (Z) birbirinden çıkarmaya çalışıyorum." "Tohum yeri" yoktur, TÜM noktaları tarıyorum.
user32882

Bunu öngördüğüm en büyük zorluklardan biri sonucun nasıl tasvir edildiği. 0= 720m uzakta ve ± 120m yükseklik, 1= bir veya daha fazla 720m uzakta & ± 120m yükseklik olmayan bir raster sonucunun olması kabul edilebilir mi ? Veya kriterleri kaç puanın karşılayacağını saymanız mı gerekiyor ?
Erica

Sevgili Erica, İlk seçim kabul edilenden daha fazla olurdu. Bu kriterleri kaç puan karşıladığını saymaya gerek yok, ancak orijinal rasterle karşılaştırıldığında bunları görebilmem gerekiyor. Öneriye göre, 1 değerine atanan herhangi bir nokta / piksel, gerekli yükseklik ve uzaklıktan başka veya birkaç noktaya sahip olacak, bu yüzden mükemmel! Tek sorum bunu etkili bir şekilde nasıl başaracağım?
user32882

Yanıtlar:


13

Belki de çok basit bir yaklaşım Odak İstatistiklerini kullanmak olacaktır .

  • İlgilendiğiniz mahalleyi, iç yarıçapı 720m'nin hemen altında ve dış yarıçapı 720m'nin biraz üzerinde olan bir halka olarak tanımlayın . (Bu biraz hücre boyutuna bağlıdır. Örneğin, 5m hücrelerin halkası 717.5 - 722.5 olacaktır; bu, 1m hücre raster için çok büyük bir pencere olabilir.)
  • MINMahalledeki en düşük yükseklik değerini bulmak için istatistik türünü kullanın .
  • MAXMahalledeki en yüksek yükseklik değerini bulmak için ikinci kez tekrarlayın, istatistik türünü kullanın .
  • Raster Hesaplayıcı'yı kullanarak yükseklik farklılıklarının yeterince büyük olup olmadığını değerlendirin. Gibi bir şey

    Con((Abs("DEM" - "FSMin") > 120) | (Abs("DEM" - "FSMax") > 120), 1, 0)

    Orijinal-min farkı veya orijinal-max farkı 120 metreyi aşarsa, değer 1'dir, aksi takdirde 0'dır. ( Not: Sözdizimini test etmedim. )

Bu sadece bir hücrenin, mesafe / yükseklik ölçütlerinizi karşılayan bir veya daha fazla komşu hücreye sahip olup olmadığını söyler , size kaç tane olduğunu söylemez.


Vay be .... Bence bu çalıştı .... inanılmaz. Çok teşekkür ederim. Çözüm, CBS'de oldukça basit olduğunda bunu yapmaya çalışırken VBA ile uğraşarak haftalar geçirdim. Çok yaşa.
user32882

Bu, en az 120m yükseklik farkı olan bir komşuyla olan noktaları tanımlamıyor mu? Sorunun amacı olduğundan şüpheliyim, ancak "120 metre fark" ifadesi.
Llaves

@Llaves Evet, haklısın. Tam olarak 720m'de tam olarak 120m fark bulmanın çok ilginç bir senaryo gerektirdiğinden şüpheleniyorum.
Erica

Ne olursa olsun, doğal araziyle uğraştığımızdan beri bir aralık olmalı. Özel uygulama için 120 metreden daha yüksek kot farkları aslında daha ilginç. Orijinal ifademde daha kesin olmalıydım. Yine de teşekkürler çocuklar.
user32882
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.