Daha fazla ayrıntı için bu bağlantıya bakın.
Sorun:
Ben sürekli raster (bir öznitelik tablo olan bir), hücre hücre ve döngü değerini almak için döngü istiyorum . Raster hesap makinesini kullanmadan aşağıda ayrıntılı olarak verilen harita cebir adımlarını taklit ederek bu değerleri alıp koşullu olarak çalıştırmak istiyorum.
Aşağıdaki yorum istekleri doğrultusunda, soruna arka plan sağlayan ve aşağıdaki "Analiz gerekli:" adlı bölümde böyle bir yöntem uygulama ihtiyacını gerekçelendiren ayrıntılar ekledim.
Aşağıda önerilen analizin, arka plan sağlayarak sorunumla ilgili olmasına rağmen, bir cevapta uygulanması gerekmez. Sorunun kapsamı, yalnızca hücre değerlerini almak / ayarlamak için sürekli bir tarama yoluyla yineleme ile ilgilidir.
Analiz gerekli:
Aşağıdaki koşullardan HERHANGİ BİRİ yerine getirilirse, çıkış hücresine 1 değeri verin. Çıkış hücresine yalnızca koşullardan hiçbiri yerine getirilmezse 0 değerini verin.
Koşul 1: Hücre değeri üst ve alt hücrelerden büyükse, 1 değerini verin:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
Çekirdek dosyası şöyle görünür:
3 3
0 1 0
0 0 0
0 1 0
Koşul 2: Hücre değeri sol ve sağ hücrelerden büyükse, 1 değerini verin:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
Çekirdek dosyası şöyle görünür:
3 3
0 0 0
1 0 1
0 0 0
Koşul 3: Hücre değeri üst sol ve alt sağ hücrelerden büyükse, 1 değerini verin:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
Çekirdek dosyası şöyle görünür:
3 3
1 0 0
0 0 0
0 0 1
Koşul 4: Hücre değeri alt sol ve sağdan büyük hücrelerden büyükse, 1 değerini verin:
Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0)
Çekirdek dosyası şöyle görünür:
3 3
0 0 1
0 0 0
1 0 0
Durum 5: Eğer herhangi bir komşu hücrelerin bir merkezi hücreye bir değere eşit olan, 1 değerine tarama çıktı vermek ( iki en yakın komşu hesaplamalar ile fokal çeşitli kullanarak )
Harita cebiri neden kullanılmıyor?
Aşağıda, sorunumun harita cebiri kullanılarak çözülebileceği kaydedildi, ancak yukarıda görüldüğü gibi, toplam altı raster hesaplama artı bir arada yaratılan tüm rasterleri birleştirmek için bir tane. Bana öyle geliyor ki , her bir hücrede yedi kez döngü yapmak ve yedi raster oluşturmak için oldukça fazla bellek kullanmak yerine her hücrede bir kerede tüm karşılaştırmaları yapmak çok daha verimli.
Sorun nasıl ele alınmalı?
Yukarıdaki bağlantı IPixelBlock arayüzünün kullanılmasını önerir, ancak ESRI belgelerinden IPixelBlock üzerinden tek bir hücre değerine gerçekten erişip erişmediğiniz veya ayarladığınız IPixelBlock boyutundan birden fazla hücre değerine erişip erişmediğiniz açık değildir. İyi bir cevap, sürekli bir raster hücre değerlerine erişmek için bir yöntem önermeli ve açıkça belli değilse, kodun arkasındaki metodolojinin bir açıklamasını sağlamalıdır.
Özetle:
Hücre değerlerine erişmek için bir CONTINUOUS rasterindeki ( öznitelik tablosu olmayan ) her hücrede döngü oluşturmanın en iyi yöntemi nedir ?
İyi bir yanıtın yukarıda açıklanan analiz adımlarını uygulaması gerekmez, yalnızca bir raster hücre değerlerine erişmek için bir metodoloji sağlamak gerekir.