Arcmap Özniteliklere Göre Python ile Seç


9

Aşağıdaki (ızgara) kesişen "proje" katmanı (vurgulamak) seçmek ve daha sonra seçilen "Grid" bir kayıt çekmek istiyorum. Katmanı kaydetmeme gerek yok.

Not: Komut dosyasını Python Konsolu penceresindeki ArcMap içinden çalıştırma.

import arcpy

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")

# Then add a selection to the layer based on location to features in another feature class 
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")

Bu kod çalışır ve hata verilmez, ancak herhangi bir özellik seçmez (vurgulamaz). Neden herhangi bir fikir? Ayrıca gerçekten yavaş çalışır.

Sonuçlar

Temelde bunu yapmaya çalışıyorum:

resim açıklamasını buraya girin

Bu neredeyse hızlı çalışır, ancak aynı şeyi python kullanarak yapmak istiyorum. Sadece seçilen özelliğin tablosundan bir değere ihtiyacım var, katmanın bir kopyasına ihtiyacım yok.

Çözeltinin bir kısmı kullanmak olabilir in hafıza alanını bir

Bellek içi çalışma alanına veri yazmak genellikle diğer biçimlere yazmaktan çok daha hızlıdır ...

Bellek içi çalışma alanının nasıl uygulanacağından emin değilim


Bu komut dosyasını ArcMap içinden mi çalıştırıyorsunuz (yani Python konsolunda)? Veya ArcMap'in dışından mı (yani IDLE veya başka bir Python editörü içinde)? ArcMap'in "herhangi bir özelliği seçmesi (vurgulaması") tek yolu ArcMap içinden. import arcpyKomutun çalıştırılması biraz zaman aldığından komut dosyasını ArcMap dışından çalıştırdığınızdan şüpheleniyorum .
dmahr

Ben Python Konsolu penceresinde ArcMap içinden komut dosyası çalıştırıyorum.
Tristan Forward

ArcMap içinden çalıştırıyorsanız , zaten bir katman olduğu için arcpy.MakeFeatureLayer()hatta ihtiyacınız yoktur project. Sadece yap arcpy.SelectLayerByLocation_management("project","INTERSECT","Grid").
dmahr

harika bir soru biçimi!
Brad Nesom

Teşekkürler @dmahr, hala yerleşik Özniteliğe Göre Seç'den daha yavaş çalışır, ancak çalışır.
Tristan Forward

Yanıtlar:


2

İyi soru!

Dmahr doğru, sadece bir özellik katmanı oluşturmak yerine katmanı seçmek daha hızlı. İsteğe bağlı olmalarına rağmen değişkenlerin geri kalanını da eklerdim.

arcpy.SelectLayerByLocation_management ("project_lyr", "INTERSECT", "Grid", "#", "NEW_SELECTION")

Bulduğum bir başka şey, ArcMap'ın python penceresinde bir şeyleri çalıştırmak her zaman daha yavaş. Kodu bir .py dosyasına yazarsanız, araç kutusuna bir komut dosyası olarak ekleyip çalıştırırsanız, işlemin daha hızlı gideceğini görüyorum.

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.