Vairāk

Vai ArcPy izmantot atlasīto slāni pēc atribūta?

Vai ArcPy izmantot atlasīto slāni pēc atribūta?


Es vēlos, lai viens mainīgais ņemtu ievadi no lietotāja un pēc tam mēs salīdzinātu vērtību ar atribūtu.

val = input ("Vaicājiet lietotājam kaut ko.") arcpy.SelectLayerByAttribute_management ("Paraugs", "NEW_SELECTION", "" "" ATTRIBUTENAME "= 'val'" "")

Tā kā mums ir jāievieto apostrofi ap "val", tas tiek uzskatīts par virkni, nevis kā mainīgu, kura vērtību mēs vēlamies salīdzināt. Tātad kāds veids, kā mēs to varam izdarīt?


Drošāks veids, kā to izdarīt, būtu:

val = raw_input ("Vaicājiet kaut ko.") query = "" "" ATTRIBUTE_NAME "= '%s'" ""%val arcpy.SelectLayerByAttribute_management ("Paraugs", "NEW_SELECTION", vaicājums)

Šajā gadījumā, izmantojot %s, iegūtā vērtība tiks pārveidota par virkni. Tādā veidā, ja lietotājs ievada veselu skaitli, + operators neizdosies izveidot vaicājumu.

Ja vēlaties būt pārliecināts, ka tas derēs jebkuram konkrētam datu tipam, varat izmantot arī AddFieldDelimeters, lai apstrādātu atribūta nosaukumu neatkarīgi no avota datu veida.


Nākotnē jūs padarīsit dzīvi vienkāršāku, izmantojot lauku atdalītāju pievienošanu. Tas darbosies ar formas failiem, funkciju klasēm failu ģeodatubāzē, personīgajai ģeodatubāzei utt.str.format ()arī padara ērta virkņu ar pēdiņām lasīšanu/rakstīšanu vieglāku.

val = raw_input ("Jautājiet lietotājam kaut ko:  n") fc = "Sample" field = arcpy.AddFieldDelimiters (fc, "ATTRIBUTENAME") selection = "{field} = '{val}'". format (field = field) , val = val) arcpy.SelectLayerByAttribute_management (fc, "NEW_SELECTION", atlase)

Es neesmu mēģinājis to darīt šajā konkrētajā gadījumā, bet parasti, veicot līdzīgu darbu python, es darītu kaut ko līdzīgu:

val = raw_input ("Jautājiet lietotājam kaut ko.") selection = str ("" "" ATTRIBUTENAME "= '" "" + val + "'") arcpy.SelectLayerByAttribute_management ("Paraugs", "NEW_SELECTION", atlase)

Ņemiet vērā arī to, ka vismaz manā python versijā, ja jūs to darātval = input ("Jautājiet lietotājam kaut ko."), jums ir jāsaprot, ka lietotājam nebūs jārakstalietotāja atbilde, bet drīzāk būs jāraksta"lietotāja atbilde"vai"lietotāja atbilde"lai to pieņemtu python un interpretētu kā ievades virkni. Tas notiek tāpēc, ka ievade () ņem lietotāja norādīto vērtību un mēģina to izpildīt tā, it kā tā būtu tikai cita pitona koda rinda pašā skriptā. Tomēr, lai to apietu, varat izmantot raw_input (), kas nolasa lietotāja ievadīto vērtību kā virkni.


Skatīties video: 오토캐드 초보탈출 오토캐드 기초 레이어Layer, 도면층 설정 방법 l 설쟁디제이