Daha çox

ArcMap-da Python istifadə edərkən Xəritə Çizimini necə söndürmək olar?


ArcMap-da qat yaradan bir Python skriptim var. Ssenari yaxşı işləyir, lakin yeni bir təbəqə yaradıldıqda hər zaman avtomatik olaraq bir xəritə çəkilir və bu da ssenarinin işlənməsini daha uzun müddətə aparır. Mənim xəritədə çəkilmək üçün təbəqələrə ehtiyacım yoxdur. Yarandıqdan sonra təbəqələri çəkməmək üçün skriptimi qurmağın bir yolu varmı?

Axtarış zamanı bənzər bir sual tapdım: Python istifadə edərək ArcMap-da çəkməyi necə söndürmək və aktivləşdirmək olar?

Bu həll cəhd heç bir nəticə vermədi; "SendKeys adlı modul yoxdur"

Masaüstü üçün ArcGIS 10.2 istifadə edirəm.


Bunu etmək:

  1. Xəritənizdəki qatı bağlayın
  2. Qatınızı bir qat faylı olaraq saxlayın
  3. Katman faylını xəritənizə əlavə edin - görünən xüsusiyyət False olaraq təyin edilərək daxil olacaq

Bütün bunları koddan etmək istəyirsinizsə, yeni qat obyektindəki görünən xassəni xəritənizə əlavə etmədən əvvəl False olaraq təyin etsəniz, bunu da elə asanlaşdıracaqsınız.


Aktiv Piezo Zil Səsi Həm Rpi GPIO-nu aşağı, həm də yüksək səviyyəli siqnalda səsləndirir

Təklif etdiyim 4k7 əsərlərindən istifadə etməyimi təsdiqləmək üçün aşağıdakı aktiv səs siqnalını sınayıram.

OP, həm Rpi, həm də Arduino ilə uyğundur deyərək aşağıdakı aktiv səs siqnalını istifadə edir.

Sunfounder-in səs siqnalı üçün sxemini tapdım, ancaq OP-nin zənginə bənzəmir. Beləliklə, aşağıda göstərildiyi kimi şematik çəkmək üçün komponentləri izləmək üçün bir multimetrdən istifadə etməliyəm.

Rpi3 node.js GPIO 21 yanıb-sönən LED kodu LED ilə işləyir, aktiv 3V3 ilə deyil

5V, 2kHz pizoelektrik səs siqnalı

Aşağı tezlikli səs-küy hətta buzzer.write (0), lakin buzzer.write (1) OK, buzzer.unexport () da OK sönür.

Zil səsi qırılıb?

2019apr28hkt2237 yeniləyin

Cavabını tapdığımı düşünürəm. Xahiş edirəm aşağıdakı köhnə cavabımı görməməzlikdən gəlin. İndi node.js və digər python proqramlarınızın niyə işləmədiyini izah edəcəyəm. Sonra onsuz da yaxşı olduğunu təsdiqlədiyim bir təklif təklif edəcəm.

Əsas səbəb, Rpi üçün Arduino ilə uyğun aktiv səs siqnalı istifadə etməyinizdir. Bu Arduino ilə uyğun səs siqnalı üçün aşağı aktivlik üçün, yəni təxminən 1.0V zil siqnalından aşağı giriş siqnalı açıq olduqda dizayn edilmişdir. Və giriş siqnalı təxminən 3.5V-dən yüksək olarsa, səs siqnalı sönəcəkdir. İndi Arduinonun heç bir problemi yoxdur, çünki Yüksəkliyi 4.2V, 3.5V-dən çoxdur.

İndi Rpi böyük problem yaşayır, çünki Yüksəkliyi təxminən 3V-dir, sönmək üçün tələb olunan 3.5V-ə çatmaz.

Asan - Rpi GPIO pin və aktiv səs siqnalının girişi arasında 4k7 müqavimət qoyun. Təxminən bir ildir ki, yeni başlayanlar üçün bu fənd söyləyirəm, amma heç kim dinləmir,. (

Tez və çirkli izahat

Zil səsi dövrə girişinin ön hissəsi böyük ehtimalla PNP BJT-dir. Tərslik müqaviməti ilə bazaya giriş siqnalı 3.5V və ya daha yüksək olduqda, tranzistor kəsilir (Arduino High 4.2V, buna görə təmiz bir kəsik), təməl cərəyan axmaz, buna görə kifayət qədər kollektor yoxdur. piezo şeyini aktivləşdirmək üçün cari.

İndi Rpi's High yalnız 3V-dir, bu səbəbdən təmiz bir kəsilmə üçün kifayət qədər yüksək deyil, nəticədə bir az əsas cərəyan yaranır və buna görə də piezonu qismən / zəif bir şəkildə aktivləşdirmək üçün bəzi kollektor cərəyanı olur, buna görə daha kiçik vızıltılı səsi eşidirsiniz.

Rpi GPIO və giriş arasındakı bir 4k7-nin əlavə edilməsi, kiçik baza cərəyanının belə axmasına, təmizlənməməsinə imkan verməməkdir. Bəli, təsdiqlədim! :)

İndi aktivləşdirmə / iş üçün həm Arduino, həm də Rpi, 1V-dən aşağı səviyyəyə sahibdir, bu səbəbdən hər ikisinin açılmasında problem yoxdur.

Yeniləmə2019apr29hkt2051

Əslində Rpi, 5V aşağı səviyyəli trigger rölesi də daxil olmaqla digər bir neçə Arduino cihazı ilə eyni problemi yaşayır. Eynilə Rpi yalnız aça bilər, ancaq söndürə bilməz. 4k7 müqavimət əlavə etmək üçün eyni hiylə sürətli müalicədir. Bunun ətrafında başqa bir şey əldə etmək aşağıdakılardır:

Röleyi söndürmək üçün GPIO High təyin etmək yerinə,

Məncə node.js eyni hiylədən istifadə edə bilər, yəni

zil səsini söndürmək üçün buzzer.write.0 əvəzinə buzzer.unexport () istifadə edin

Xahiş edirəm aşağıdakı köhnə cavaba məhəl qoymayın.

  1. səs siqnalınız qırılıb və ya
  2. node.js kodunuz arabadır və ya
  3. buzzer.write (0) səs siqnalının salınmasına səbəb olur

Səs siqnalının qırılıb-pozulmadığını yoxlamaq üçün (daha az ehtimal olunur) zil səsini test etmək üçün sadə bir piton peep proqramından istifadə edə bilərsiniz:


3 Cavablar 3

Dördlüyə tətbiq olunan bir piksel kölgələyicidə sferik proyeksiya edə bilərsiniz.

Fərz edək ki, kürə dörddə mərkəzləşmişdir və proyeksiya ortoqonaldır (perspektiv proyeksiya ilə bir az daha çətinləşir, ancaq tərs baxış və proyeksiya matrislərinizi kölgəçəkdən keçirsəniz, bunu da bacarmalısınız).

Doku sorğusu yerinə adi bir şəkildə koordinasiya edir:

TexCoord'u sferik bir toxuma eşlemesinin son koordinatları olaraq istifadə edirsiniz və prosesi tərs edərək orijinal toxuma koordinatlarını alırsınız:

İndi x2 və y2 -π və π arasındakı dəyərlərdir. Zaman dəyişkənliyinizə görə toxumanı "sürüşdürməlisiniz" və toxuma koordinatlarınızı normallaşdırmalısınız. Y oxu ətrafında sadə bir fırlanma üçün:


4 Cavablar 4

Şərhləri və digər cavabları yoxlamaq, bəzilərinin hələ də tablet düymələrindən istifadə edərək dəyişkən toxunuş axtarmağına bənzəyir. Yalnız 3 şeyə ehtiyacınız olduğunu istəyirsinizsə (Ubuntu / Unity üçün göstərilmişdir):

randompastın 1 sətir əmri ilə həlli gözəldir və daha rahat 1 sətirli keçid əmrinə çevrilə bilər:

Əlbəttə ki, öz skriptiniz və ya əmr satırınız varsa, buna ehtiyacınız yoxdur, ancaq tabletlərin adını və ya kimliyini bilmədən bağlı tabletlərin toxunuşunu dəyişdirmək üçün əlverişli bir yoldur.

Bunu terminal olmadan çalıştırmaq istəyirsinizsə, skripti bir faylda saxlamalı, icra oluna bilən və bunun üçün bir klaviatura qısayolu yaratmalısınız. Bunun səbəbi, birbaşa tablet düymələrinə bir əmr təyin edə bilməməyinizdir (ancaq düymə vuruşu təyin edə bilərsiniz.).

Birlikdə açıq Sistem Ayarları> Klaviatura> Qısayollar və yeni bir qısa yol yaradın. Çəkinin Super açar, çünki həmişə 3-cü addımda işləməyə bilər.

Komanda olaraq, skript dosyanızın adını qoyun (tam yol, tək sitatlar arasında, əgər əmin deyilsinizsə, bu terminalı sürüşdürün və yaradılan əmrdən istifadə edin).

Açıq Sistem Ayarları> Wacom Tablet> Xəritə Düymələri. və seçdiyiniz düyməni düymənizə təyin edin.

Əvvəlcə onlara heç bir modifikasiya etmədən hərf təyin edə biləcəyiniz düyməni bilmək üçün bir mətn sahəsi seçin və düymələrin üzərinə basaraq hansı hərfə uyğun olduqlarını görün.

Diqqət yetirin: bütün düymələr tanınmayacaq (Bambukum üçün 4-dən 3-ü) və düymələrin hamısı işləməyəcək (ilə heç birini ala bilmirəm Super iş açarı). Fərqli kombinasiyaları sınamalısınız.

Orijinal Cavab (əmrləri öyrənmək üçün)

Pen & amp Touch'umu bir il əvvəl qurdum ki, burada səhv edə bilərəm. Ümumiyyətlə etdiyim bir terminalda işləyir:

Başqa bir tabletiniz olduğu üçün bu sizin üçün işləməyəcək, əvvəlcə cəhd edin

istifadə ediləcək parametrləri verməlidir. Əvvəlcə cihazınızın adını almalısınız (buna DEVICE_NAME deyək), buna görə cəhd edin:

Bu mənə Pen & amp Touch üçün verir:

Wacom BambooPT 2FG 4x5 Qələm silgi id: 11 tip: ERASER
Wacom BambooPT 2FG 4x5 Qələm qələmi id: 12 tip: STYLUS
Wacom BambooPT 2FG 4x5 Barmaq yastığı id: 13 növü: PAD
Wacom BambooPT 2FG 4x5 Barmaq toxunuşu id: 14 növü: Toxunma

Aydındır ki, TOUCH tipli olan, burada əlil olanıdır. Burada DEVICE_NAME olardı Wacom BambooPT 2FG 4x5 Barmaq toxunuşu və DEVICE_ID olardı 14.O zaman hansı parametri deaktiv edəcəyini bilməlisən, cəhd edin:

Aktivləşdirmək / söndürmək üçün bir çox parametr var və hər bir parametr adı üçün (bu PARAM_NAME adını verək) gözlənilən dəyər növü izah olunur. Bu vəziyyətdə, ilə edə biləcəyiniz Touch parametrini söndürmək istəyirik --set seçim. Sintaksis belədir:

PARAM_VALUE yerinə nə qoyacağınıza əmin deyilsinizsə, cari dəyəri görmək üçün --get seçimini edin:


ASLR Linux Sistemlərində Nə qədər Effektivdir? Adlı bir məqaləyə görə, / proc / sys / kernel / randomize_va_space interfeysindən istifadə edərək Linuxdakı ASLR-i konfiqurasiya edə bilərsiniz.

  • 0 - Təsadüfi seçim yoxdur. Hər şey statikdir.
  • 1 - Mühafizəkar təsadüfi seçim. Paylaşılan kitabxanalar, yığın, mmap (), VDSO və yığın randomizə olunur.
  • 2 - Tam randomizə. Əvvəlki nöqtədə göstərilən elementlərə əlavə olaraq, brk () vasitəsilə idarə olunan yaddaş da randomizə olunur.

və yenidən işə salmaq üçün çalıştırın

Bu yenidən başlada bilməyəcək, buna görə bunu sysctl-də konfiqurasiya etməlisiniz. /Etc/sysctl.d/01-disable-aslr.conf tərkibində olan bir sənəd əlavə edin:

bunu həmişəlik söndürməlidir.

/ Proc / sys / kernel / randomize_va_space interfeysi sistem boyu ASLR-yə nəzarət edir.

Sistem daxilində bir dəyişiklik istəmirsinizsə, ADL_NO_RANDOMIZE şəxsiyyət bayrağını istifadə edərək ASLR-i müvəqqəti olaraq söndürün. Bu bayrağın idarəsi setarch və onun kimi -R seçimi ilə edilə bilər

Bu, bu qabıqdan işləyən bütün uşaq prosesləri daxil olmaqla ASLR əlilliyi olan yeni bir Bash qabığını açacaqdır. Bitirdikdən sonra qabıqdan çıxın.

Yeri gəlmişkən, i386-da ulimit -s limitsiz ASLR-ni effektiv şəkildə "söndürə" bilər.

EDIT (Nis 2016): ulimit -s limitsiz düzəldildi və CVE-2016-3672 təyin edildi.


Düşünürəm ki, aşağıdakıların işləməsi üçün bir az ssenari işi görməli olacaqsınız, amma istədiyiniz şeyin çoxunu yerinə yetirir. Bir müddət əvvəl, kimsə Ağırlıq Boyasını Vertex Color Paint-a çevirən mövcud bir skriptin necə dəyişdiriləcəyi barədə bir sual göndərdi, skript bağlantısını göndərdi və bunu yalnız sizə yönləndirmək əvəzinə cavab olaraq göndərməyə qərar verməyimin bir neçə səbəbi var. keçid. Birincisi, bunun düzgün işləməsi üçün vacib bir addım var. İkincisi, xarici sayta keçid aşağı düşərsə, skripti də buraya birbaşa göndərmək istərdim, bu yolla yenə də burada mövcud olacaq.

Başlamaq üçün, Vertex Color Paint tamamilə ağ rəngdə başlayır və Verton rəngləri ilə Addon'u bütün White kimi istifadə etməyə çalışarsanız, qəribə bir şəkildə uğursuz olur. Aldığım ilk nəticələr aşağıdakılara bənzəyirdi. Ağdan bozdan sonra yenidən ağa keçir. Ağırlığın Çəki Boya rejimində olduğu yer qara deyil.

Lakin əvvəlcə bir Color vertex qrupu əlavə edib sonra qrupu qara etsəniz, Addon yaxşı işləyir. Fırça rəngini qara rəngə qoyun və Set Vertex Color shift + k istifadə edin

İndi bütün qara vertex rənglərinə sahib olacaqsınız.

Beləliklə, artıq çəki boyama rejiminə keçə və altındakı boşluq çubuğu axtarış menyusunda tapıla bilən əlavə istifadə edə bilərsiniz Weight2VertexCol

Aşağıdakı kimi bir nəticə əldə etməlisiniz.

İndi əyləncəli hissə, qara və ağları tərs çevirmək üçün Addon'u dəyişdirməlisiniz. Xoşbəxtlikdən bunun üçün riyaziyyat asandır, təəssüf ki, Python ssenarisini çox yaxşı bilmirəm və riyaziyyatla ortababam. İndi düzgün düşünürəmsə (bunu həmişə etmirəm) ağ-qara çevirmək üçün (x * -1.0) +1.0 istifadə edə bilərsiniz. Beləliklə, Vertex Colors yazan skriptdə yer tapsaq və x-ı yuxarıdakı formulda olduğu dəyişəni yerləşdirsək, skript istədiyiniz şeyi etməlidir.

İndi yalnız ssenarini göndərəcəyəm, sonra bəlkə kimsə bu son hissəni müəyyənləşdirə bilər. Kodun pəncərəsi kopyalayıb yapışdırdığımdan və əllə bir dəstə girinti etməyim lazım olduğu üçün PyCharm CE kimi bir proqramdan istifadə edərək yenidən bir formatlaşdırma olmadan bir kod işləsə həqiqətən təəccüblənəcəyəm. Hər halda, burada xarici saytdakı ssenariyə keçid var, belə ki insanlar bu nüsxədən son çarə olaraq istifadə edə bilərlər.

Ssenari -> adını daşıyır vertex_color_weight_transfer.py gələcəkdən kimsə bunu Google istəsə. Adı aşağıdakı ssenaridə verilmişdir.

Ssenaridən sonra indiki kimi yerinə Red = 0.0 və Blue = 1.0 etmək üçün onu necə dəyişdirə biləcəyiniz barədə bəzi qeydlər qoydum (Qarışıq olmadığım müddətdə və onsuz da etmirsə).

Aşağıdakı sətirlər Qırmızı və Mavi yerlərin Qara və Ağa köçürüldüyünə bənzəyir. Col.r = çəki olduqca yaxşı bir göstəricidir. Üç rəng kanalına da eyni məlumatın verilməsi həqiqətdir. Budur, burada axtardığımız boz rəngli bir rəng düzəldin.

Beləliklə, başlanğıc nöqtəsi olaraq həmin parçanın birinci sətirini dəyişdirərdim

sonra test edərdim. İstədiyiniz şeyi etməlidir düşünürəm.

Kodun dəyişdirilməsinin bir yolunu tapsanız, vertex rənglərini avtomatik olaraq sənin üçün bir neçə addım saxlayacaq skriptin bir hissəsi olaraq qara rəngə çevirəcəksən.

YENİLƏNİB: Ters çevrilmiş düsturu sınaqdan keçirdim və indi ssenari, istədiyinizi edir, nəticəsi budur. Bundan əlavə, boz rəngli ters çevrilmə ilə ilk Vertex Rəngləri qara əvəzinə ağdan başlamalıdır, beləliklə sizin üçün bir az quraşdırma qənaət edir.


Google Suggest tədricən dünyanın müxtəlif yerlərində Google Instant ilə əvəz olunur. Hər halda, aşağıdakıları et:

  1. Hər hansı bir brauzerdən Google.com-a (və ya yerli versiyanıza və ya iGoogle-a) gedin.
  2. Sağ üstdəki "Ayar" bağlantısını vurun və "Axtarış Ayarları" nı seçin
  3. "Avtomatik Tamamlama" bölməsinə endirin və "Axtarış qutusuna sorğu proqnozları verməyin" seçimini edin.
  4. "Tercihləri Saxla" düyməsini vurun

Brauzerlər arasında təkrarlamağınız lazım ola bilər, çünki axtarış üstünlüklərinin bir çərəzə yazıldığına inanıram.

Yeniləmə: bunu yazandan bəri Google ayarlar səhifəsini dəyişdirdi və indi mənimki belə görünür:

Bununla birlikdə, Google SSL saytına (https://www.google.com) girib "orada axtarış ayarlarını seçsəniz, bu seçimi görəcəksiniz:

IMHO, bunları söndürsəniz və HƏLƏ də təkliflər / anlar alsanız - bu Google-a bildirilməli bir səhvdir (və unutmayın, Instant bir həftə əvvəl istifadəyə verildi, ona görə də səhvlərini düzəltmək üçün vaxt verin).

IE8-də. Əlavə et idarə edin. Axtarış təminatçıları seçin. Google seçin. Axtarış təkliflərinin yanında təklifləri açmaq və ya söndürmək üçün Enable və ya Disable seçin. Yaxın.

Axtarış motorlarını avtomatik tamamlama və təklif istifadə etməyən birinə dəyişdirin. ixquick biridir. digərlərinin əksəriyyəti Google'u izlədi və qalıcı bir imtina əvəzinə çərəzləri məcbur etməklə qələmə aldı. Və ya axtarış motorunun hissələrini hissə-hissə yenidən yazıb sökə və ya onsuz öz axtarış motorunuzu qura bilərsiniz. Bu, Noscript və Greasemonky'nin qarşısını almağa imkan verir.

Əlbətdə ki, bunu etməklə, təsadüfən motoru 3-6 ayda bir etdiyiniz hər şeyi aşan yeniləmələri söndürən axtarış motorunu yararsız hala gətirən şəkildə tamamilə söndürə bilərsiniz. Başqa birini tapmağa məcbur edirsən.

Ən yaxşı seçim? Avtomatik Tamamlamanın məcburi istifadəsindən imtina edin / mühərrikləri təklif edin və istifadə etməyən və ya izləmə "Çərəz" tələb etməyən qalıcı imtina edənlərə köçün.

Ən yaxın tapdığım, istifadə zamanı ünvan çubuğundakı avtomatik tamamlamanın söndürülməsinə dair bu Google dəstək səhifəsidir Chrome:

"Seçimlər" informasiya qutusunun "Məxfilik" bölməsində "Ünvan çubuğuna yazılmış axtarışları və URL-lərin tamamlanmasına kömək etmək üçün təklif xidmətindən istifadə edin" onay qutusunu seçin.

Bu mövzuda tapdığım digər şey burada:

Daxil olarkən tarixə əsaslanan axtarış fərdiləşdirmələrini deaktiv etmək üçün Veb Hesabını Google Hesabınızdan silməlisiniz. Ayrı-ayrı elementləri silməyi də seçə bilərsiniz. Qeyd edək ki, bu xidmətin silinməsi bütün köhnə axtarışlarınızı Veb Tarixçəsindən silir.

Bu, Google’u əvvəlki axtarışlarınıza baxmağı dayandıracaq, lakin bütün avtomatik tamamlama funksiyalarını dayandırıb dayandırmayacağını bilmirəm.


  1. Mac kompüterində, Mac App Store-dan Apple Configurator'u yükləyin
  2. Konfiquratorda gedin Fayl> Yeni Profil (və ya Command + n)
  3. Doldurun Ümumi bölməsinə, sonra gedin Hüceyrə və seçin Konfiqurasiya edin
  4. Altında Konfiqurasiya edilmiş APN növü, seçin Varsayılan və Məlumat APN-ləri
  5. Daşıyıcınızın APN parametrlərindən istifadə edərək lazımi məlumatları doldurun
  6. Altında Data APN dəstəklənən IP versiyaları, seçin IPv4
  7. Profili telefonunuza daxil edin və yandırın

Ümumiyyətlə, yox. Bir çox mobil daşıyıcı yerləşdirir və Apple yalnız IPv6 şəbəkəsini dəstəkləyir. Bəzi hallarda hələ də bir IPv4 ünvanı ala bilərsiniz, ancaq bu yer bir çox bölgədə tükənmişdir və uyğun bir IPv4-dən IPv6 şlüzünə və ya konfiqurasiyaya kömək üçün biriniz varsa, komanda izləyici dəstəyinə və ya İT mütəxəssisinizə müraciət etmək istərdiniz. 1992-ci ildə təklif olunan və 1998-ci ildə layihə standartı və 2017-ci ildə standart standart olan bu yeni texnologiyaya uyğun bir ekran paylaşma həllini axtarın.

Bir sözlə, IPv6, mobil telefonlar üçün nəzərdə tutulmuşdur ki, adambaşına minlərlə cihazın özünəməxsus bir ünvanı ola bilər və bunun IPv4 ilə müqayisədə əhəmiyyətli təhlükəsizlik və performans üstünlükləri var. 2018-ci ildə IPv6-nı söndürmək bir çox insanın mobil məlumatlarını pozacaq, lakin əmin olmaq üçün operatorunuzla əlaqə saxlayın. NAT qatını silməklə, hər cihaz uyğun bir firewall və giriş qaydalarına sahib ola bilər və hamısı paylaşılan bir ünvanın arxasında qalmaz. Ayrıca, həqiqətən mənbə adresini gizlətmək istəsəniz və indi də evdə və kənarda xidmət olunan ünvanlarınızı əldə edə bilsəniz daha yaxşı VPN imkanlarını təmin edir.


TikZ-dən bəri normalda Will Robertson-un şərhini ikinci yerdə qoyurdum edir fantastik və öyrənməyə dəyər, düşünürəm ki, TikZ-in bu vəziyyət üçün həddi aşması. Mən şəxsən onun ağac spesifikasiyası sintaksisini lazım olduğundan daha həcmli hesab edirəm. İş üçün üstünlük verdiyim vasitə qtree paketidir (CTAN-da da var və göründüyü kimi həm TeX Live, həm də MikTeX-də yer alır). Paketin istifadəsi həqiqətən sadədir. Aşağıdakı TeX-i nəzərdən keçirin:

Bu, aşağıdakı ağacı istehsal edir:

Bunun üçün kifayətdir! Və bunun ən yaxşısı, TeX təsviridir oxuyur ağac kimi. TeX-ə baxa bilərəm və yaradılan ağacın necə olacağını dərhal bilirəm. Əsas sintaksis sadəcə [.düyün adı subtrees. Üçbucağı çəkən] qroof, əvəzinə, sonunda düyün adını tələb edir. 1, riyaziyyat rejimi üçün əsas yoldur. Bundan əlavə, qtree həmişə _ və ^ şəkillərini alt və super ssenarilər şəklində göstərəcəkdir. (Bunu söndürmədikcə.)

Ümumiyyətlə, qovşaq adlarını əvvəlində ([. + 1 [. * 2 3]]) və ya sonunda ([1 [2 3]. *]. +) Təmin edə bilərsiniz, hətta hər iki yerdə də düyün adları təqdim edə bilərsiniz, ancaq sonra uyğun gəlməli (təəccüblü deyil). Yeri gəlmişkən, buna görə qroof öz düyün adını olduğu kimi alır. Düzgün bir birləşmə ilə bir qovşaq almaq üçün qovşaq adını tamamilə tərk edə bilərsiniz. Bunlardan biri aydın deyilsə, təlimata baxın.

İndi qtree as-is üçün bir mənfi cəhət var, yəni bunun üçün hazırlanmışdır sadə ağaclar. Düyünlərarası məsafəni dəyişdirmək, ağacların çərçivələrini və buna bənzər şeyləri dəyişdirmək üçün məhdud dəstək təklif edir, lakin inanılmaz dərəcədə zərif bir şey edə bilmir. Ancaq xoşbəxtlikdən, bunu istəsən yenə də əldə edə bilərsən: gir tikz-qtree. Bu paket, ağaclarınızı çəkmək üçün TikZ-in bütün gücündən istifadə etməyə imkan verir. İki aşkar xüsusiyyət bunlardır: (a) mətn əvəzinə bir ağacdakı etiketlər ixtiyari node s ola bilər və (b) oxları, kəsikli xətləri, əyri kənarları və s almaq üçün kənarları necə çəkdiyini yenidən təyin edə bilərsiniz. Ancaq yalnız bundan daha güclüdür: bir TikZ şəklinə bir Tree yerləşdirsəniz, edə bilərsiniz nə olursa olsun düyünlər ilə istədiyiniz kimi, onları çevirin, çevrilmək üçün aralarına oxlar çəkin və s.

Bəlkə indi bu gücə ehtiyacınız yoxdur, ancaq evə getmək mesajı qtree istifadə etməkdir olmaz sizi sadə ağaclara bağlayın. Daha güclü ağacları istədiyinizə qərar verdiyiniz təqdirdə, yalnız bir idxalatı dəyişdirmək lazımdır, hər şey olduğu kimi işləməyə davam edəcək, ancaq siz də daha çox güc əldə edəcəksiniz. Bu həqiqətən tikz-qtree-nin başlıq altında qtree istifadə edib-etmədiyinə əmin deyiləm, amma hər halda sintaksis qtree üçün hələ də işləyir və nəticəsi heç olmasa deyə biləcəyim qədər eynidır.

(PS: Dilçilər, xahiş edirəm yuxarıdakı ağacdakı səhvləri bəhanə edin / düzəldin, mənim sintaksis kursumdan bir-iki il keçdi.)


Yeni bir sinfi anlamaq istədiyim zaman ilk baxdığım şeylər metodları və atributlarıdır. Bunlar xoşbəxtlikdən onsuz da var yaxşı adlandırılmışdır, buna görə də nə demək istədiklərini intuitiv şəkildə başa düşürəm.

Bununla birlikdə, xüsusiyyətləriniz yayılmışdır sinifinizin üstündə. Nə qədər atribut olduğunu görmək üçün bütün kodu oxumalıyam. Bu problem də bu yazıda müzakirə edildiyi kimi bəzi linters tərəfindən götürüləcəkdir. Cavablar onsuz da iki həll təklif edir (burada biraz uyğunlaşdırılmışdır):

Yenə də başlanğıc vəziyyətini başqa üsullara bölmək istəyə bilərsiniz. Bu halda, sadəcə None-a atributlar təyin edə bilərsiniz (bir az sənədlə) içində sonra alt başlatma metodlarını çağırın.

Yalnız bir dəyəri (və ya dəyərlər cədvəlini) qaytarın və içindəki atributlara açın içində lazım olduqda.

Nə istifadə edirsən sənə aiddir, ancaq şəxsən ikinci variantı üstün tuturam, çünki __init__ oxuyarkən bir dəyərin təyin olunduğunu daha aydın göstərir (POSA-nı izləmək üçün).

Bu vəziyyətdə bunun çox miqdarda yazma və dəyişən tapşırıqlar tələb etdiyini iddia edə bilərsiniz. Lakin bu, məni ikinci məqama aparır:


Videoya baxın: 1 - Intro - ArcGIS Pro Scripting with Python and Arcpy (Sentyabr 2021).