Tek Başına Karşı ArcGIS Aracı Olarak Python Script Performansı


11

Herkes tek başına komut dosyası olarak ArcToolbox bir Python komut dosyası çalıştırma farkı inceledi mi? Bant 1 ayıklayarak bir dizi RGB görüntüsünü tek bir banda dönüştürmek için hızlı ve kirli bir komut dosyası yazmak zorunda kaldım. Tek başına bir komut dosyası bilgisayarıma okuma ve yazma olarak yaklaşık 350 saniyede 1000 özdeş boyutlu görüntü işler. Aynı komut dosyasını ArcToolbox'tan çalıştırmak yaklaşık 1250 saniye sürer.

import arcpy
import csv
from os import path

arcpy.env.workspace = in_folder
image_list = arcpy.ListRasters()

#Create a CSV file for timing output
    with open(outfile, 'wb') as c:
        cw = csv.writer(c)
        cw.writerow(['tile_name', 'finish_time'])

        #Start the timer at 0
        start_time = time.clock()

        for image in image_list:
            #Extract band 1 to create a new single-band raster
            arcpy.CopyRaster_management(path.join(image, 'Band_1'), path.join(out_folder, image))
            cw.writerow([image, time.clock()])

Her döşemenin işlenmesi bittiğinde izlemek için bazı kodlar ekledim ve sonuçları bir CSV olarak dışa aktardım. Excel'de bitiş saatini işlem süresine dönüştürme. Sonuçları grafik olarak, işlem süresi her döşemenin bir komut dosyası ile kabaca aynıdır, ancak bir ArcGIS Aracı olarak çalıştırıldığında işlem süresi doğrusal olarak artar.

resim açıklamasını buraya girin

Veriler bir ağ aygıtına okur ve yazarsa, artış katlanarak artar.

Bu görevi yerine getirmenin alternatif yollarını aramıyorum. Bu komut dosyasının performansının neden bir ArcGIS aracı olarak çalıştırıldığında zaman içinde azaldığını , ancak tek başına bir komut dosyası olarak neden olmadığını anlamak istiyorum . Bu davranışı diğer komut dosyalarıyla da fark ettim.


1
ArcGIS dışındaki python çok daha hızlı. Python penceresini sadece çok basit komut dosyaları yaparken kullanıyorum ya da öğeleri terminale sürükleyip bırakma yeteneğini istiyorum.
atxgis

önerim (deneyimlerime dayanarak, sağladığınız gibi nicelikli performans verileri değil) yalnızca arcpy'yi son çare olarak kullanmaktır. Yukarıdaki örnekte, arcpy'sız herhangi bir python yorumlayıcısı, bir dizini rasterler için verimli bir şekilde filtreleyebilir ve yeni bir klasöre kopyalayabilir
Paul H

1
X64 arka plan coğrafi işleme ve işlem içi 32 bit arasında ne kadar fark var?
Kirk Kuykendall

"ArcToolbox'ta bir Python betiği çalıştırdığınızı" söylediğinizde, Python Betiği aracını çalıştırdığınız anlamına mı geliyor? Öyleyse, testiniz için parametre olmadan çalıştırıyor musunuz?
PolyGeo

@PolyGeo evet, bir ArcGIS araç kutusunda bir komut dosyası aracı oluşturdum. In_folder ve out_folder türetildiği 1 parametre aldı. Bunların hepsi zamanlama ölçümleri başlamadan önce yapılır.
Bjorn

Yanıtlar:


1

Bu benim şeyleri benim almak: ArcToolbox bir komut dosyası çalıştırmak araçlar ana uygulama (ArcMap) etkileşim / güncelleme çalışırken her türlü gizli maliyete maruz kalır . Tüm araçlar meta verileri güncelleyecek, bazıları harita penceresini yenilemeye çalışacak ve MXD, coğrafi işlem geçmişi panelinde çalıştırdığınız her aracı kaydediyor. Bir IDE'de çalışırken bu gizli etkilerin hiçbiri gerçekleşmez.

Yani bir döngüyü yalnızca 1000 kez çalıştırmak, MXD'nin 1000 günlükleri depoladığı anlamına gelir. ArcMap kapalı tescilli yazılım olduğundan, işleme günlüklerini kaydetme mekaniğinin gerçekte nasıl devam ettiği hakkında hiçbir fikrimiz yok ve kullandıkları veri yapısı, büyük tekrarlamayı kaldıramayan veri yapısı olabilir mi?

Başka bir sorun ArcMap olay odaklı bir uygulama, olaylar meydana geldiğinde meydana gelir, harita pan ve harita yenilemek, veri eklemek ve bir düğme etkinleştirmek olacaktır. Sanırım araçlar her türlü olayı ateşliyor ve araçlar tekrarlı bir şekilde kullanıldığında uygulama onlar tarafından "bunalmış" oluyor, ama bu benim spekülasyon mu?

Bence bir artılarını ve eksilerini artırmak zorunda, bir komut dosyası bir komut dosyası aracı olarak maruz ArcMap ortamında, özellikle güç olmayan kullanıcılar için kullanımı kolaylaştırır. Kodunuzun kabul edilmesini istiyorsanız bu önemli bir konudur. Herhangi bir ara kalite kontrolü yapmanıza gerek kalmadan sadece sizin tarafınızdan zorlanan hardcore numarası, daha sonra tercih ettiğiniz IDE'de komut dosyasını çalıştırın.

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.