Vairāk

QGIS Pievienoties atribūtiem pēc atrašanās vietas nedarbojas no Python skripta


Man ir formas fails ar punktiem un formas fails ar daudzstūriem. Es gribu apkopot visu to punktu atribūtu vērtību, kas atrodas noteiktā daudzstūrī, un es to vēlētos izdarīt katram poligonam savā datu kopā. QGIS rīks Pievienojiet atribūtus pēc atrašanās vietas man palīdz to sasniegt, un tas darbojas lieliski, ja izmantojat rīku, izmantojot apstrādes rīku kopu. Tomēr es vēlētos iekļaut rīku automatizētā skriptā. Es izmēģināju daudzus dažādus argumentus, taču mans kods (joprojām) nedarbojas, un rezultātā tiek iegūta datu kopa, kurā jaunajam daudzstūra atribūtam ir NULL vērtības.

Es izmantoju šādu kodu, kuram jābūt tieši tādam pašam kā rīks darbojas, kad es tam piekļūstu no apstrādes rīkkopa (es pat mēģināju kopēt un palaist tieši to pašu kodu no loga Vēsture un žurnāls):

summa = processing.runalg ("qgis: joinattributesbylocation", "polygonlayer.shp", "pointlayer.shp", "['satur']", 1, "summa", 1, Neviens)

Es izmantoju QGIS 2.8.2 Wien.


  • QGIS 2.8.2 ar Apstrāde spraudnis 2.9.0:

    processing.runalg ("qgis: joinattributesbylocation", layer1, layer2, u'contains ', 1,' summa ', 1, None)
  • QGIS 2.12.2 ar Apstrāde spraudnis 2.12.2:

    processing.runalg ("qgis: joinattributesbylocation", layer1, layer2, u'contains ', 0, 1,' summa ', 1, None)

    (ņemiet vērā papildu precizitātes parametru)


Kā es varu atrast skriptu un # 39 direktoriju? [dublikāts]

Es izmantoju os.getcwd (), lai iegūtu skripta faila direktorijas atrašanās vietu. Kad palaidu skriptu no komandrindas, tas man dod pareizo ceļu, turpretī, palaižot to no skripta, kuru Django skatā vada kods, tas tiek izdrukāts /.

Kā es varu iegūt ceļu uz skriptu no skripta, kuru vada Django skats?

ATJAUNINĀT:
Apkopojot līdz šim sniegtās atbildes - gan os.getcwd (), gan os.path.abspath () dod pašreizējo darba direktoriju, kas var būt vai nav direktorijs, kurā atrodas skripts. Manā tīmekļa resursdatora iestatījumā __file__ bez faila piešķir tikai faila nosaukumu.

Vai Python nav iespējams (vienmēr) saņemt ceļu, kurā atrodas skripts?


Iegūt rāmja rāmja objekta atrašanās vietu Blender 2.81 +

Man ir skripts, kas ģenerē līknes ceļu un iestata objektu tam, lai ietu pa to, es redzu, ka objekts pārvietojas pareizi animācijas kustībā, un tas arī pārvietojas pareizajā vietā (vismaz vizuāli skata portā, koordinātas, kad nospiežat n nemainīt), kad izmantoju bpy.context.scene.frame_set (desirved_frame). Tomēr, mēģinot iegūt šī objekta atrašanās vietu un pagriezienu pie iestatītā rāmja, tas vienkārši atgriež objekta sākotnējo atrašanās vietu rāmī 0. Zemāk ir kods, kuru esmu izmantojis, lai ģenerētu animācijas datus, un tas, ko es m izmantojot, lai mēģinātu iegūt atrašanās vietu.

Esmu arī mēģinājis aizstāt pēdējo cilpu ar:

Abas metodes vienkārši izdrukā objekta sākotnējo atrašanās vietu.

Lasot šo dokumentāciju, es neesmu pārliecināts, kā es izmantotu viņu parādītos piemērus, lai iegūtu reģistrēto klasi novērtētajā vietā un rotācijā vai kā pat izsaukt izpildes metodi.

Tālāk ir sniegti daži risinājumi un atbildes, kuras esmu lasījis un mēģinājis bez panākumiem:

Es tiešām neesmu pārliecināts, ko daru nepareizi, jo daži no apskatītajiem jautājumiem ir diezgan līdzīgi manam jautājumam.


Mēģina izgūt pašreizējo kadra numuru izmantošanai daļiņu vecuma materiālā Cycles

Es mēģinu izveidot ciklu materiālu, lai daļiņa uzliesmotu, kad tā iet bojā sadursmē ar citu daļiņu, izmantojot Blender 2.72a.

Man ir izdevies panākt, lai daļiņas uzbruktu un nogalinātu citas daļiņas, izmantojot Boid fiziku, bet pierādīt, ka mirušās daļiņas kaut ko dara, turklāt pazūd vai sēž tur, izrādās, ka tā ir smaga problēma.

Es iespļauju vairākas pieejas. Mans pašreizējais mēģinājums ir veicināt emisiju izturību un pārredzamību, pamatojoties uz to, cik nelaikā daļiņas ir nāves. Daļiņas, kas iet bojā sadursmē, ātrums būs nulle un vecums ir mazāks nekā tā kalpošanas laiks. Tomēr, tā kā mirušo daļiņu vecums ir 0, jūs nevarat to izmantot, lai noteiktu, vai daļiņa tikko ir nedabiski mirusi, vai tās derīguma termiņš ir beidzies pirms simts kadriem. Es to varu apiet, ja es varu iegūt pašreizējo kadra kadra numuru un man pat ir koda fragments: bpy.data.scenes ['CYCLES']. Frame_current Es to saglabāju kā skriptu un atsaucos uz to skriptā Mezgls, kuru varēju pievienot savai daļiņu sēklai, taču nevaru piekļūt izgūtajai vērtībai.

Es domāju pārveidot skriptu, lai globālais mainīgais vai atribūts tiktu aizpildīts ar kadra numuru un pēc tam piekļūtu tam ar mezglu Atribūts.

Tātad, kā es varu saglabāt pašreizējo kadra numuru tādā veidā, kas pieejams materiālu redaktoram? Esmu iekļāvis saiti uz savu blend failu. Pareizai atbildei nav jāievieš mans kods. Ja jums ir ideja, kurai nav nekāda sakara ar pitonu, es joprojām gribu to dzirdēt.


Nedarbojas Ola Hallengrena & # 39; SQL dublēšana tīkla atrašanās vietā

Pēdējo gadu laikā vairākos SQL Express serveros (no 2008. līdz 2012. gadam) esmu izveidojis Ola Hallengren SQL Server Maintenance Solution. Nesen man ir bijušas problēmas ar tīkla rezerves komponentu visiem jauniem. Man agrāk tas ir bijis vairākos serveros, tāpēc es zinu, ka tas var darboties, bet es nevaru saprast, kas kavē to strādāt tagad. Kā interešu punkts es neesmu DBA un neko nezinu par SQL, tāpēc arī esmu šeit.

Problēma

Konkrēti vienā serverī es pirms apmēram pusotra gada izveidoju apkopes grafiku. Katru vakaru tā dublēja ar citu vietējo serveri, izmantojot UNC ceļu (un vairākas citas komandas). Skripta kods ir šāds:

Tas diezgan ilgi darbojās labi, bet apmēram pirms mēneša pārtrauca darbu. Es to iestatīju dublēt lokāli, pēc tam pievienoju virkni, lai kopētu to attālajā vietā, un skriptu attālajā serverī, lai notīrītu vecās dublējumkopijas. ideāls.

Esmu mēģinājis to palaist komandrindā kā sevi un super atļauju kontu. Šī ir kļūda, kuru saņemu visos gadījumos:

Ko es esmu izdarījis

Acīmredzot SQL domā, ka tīkla atrašanās vieta nepastāv, tāpēc esmu mēģinājis visu iespējamo, lai pārbaudītu, vai visas tīkla puses lietas ir kārtībā. Es izvilku jaunu skripta kopiju un izveidoju visus objektus un darbus. Esmu pārbaudījis, vai darbojas citi skripti (integritātes pārbaudes, statistikas atjauninājumi utt.). Es izveidoju skriptu, kas izmanto tos pašus akreditācijas datus kā rezerves skripts, lai palaistu vietējo dublējumu xcopy mērķa serverī, tāpēc man ir atbilstoši koplietošanas / NTFS akreditācijas dati. Šis konts ir domēna konts (AD), kas īpaši izveidots SQL dublējumkopijām. Varu dublēt lokāli (ar šo kontu), tāpēc man ir datu bāzes atļaujas. Izmantojot Windows Explorer, es varu pāriet uz kopīgošanu kā rezerves kontu. Es varu manuāli kopēt failus uz attālo atrašanās vietu, izmantojot Windows Explorer, izmantojot dublējuma kontu.

Šis jautājums tiek uztverts arī vairākos citos tīklos, kas mani pievērsās SF. Es esmu 2008. gada R2 un 2012. gada domēnos, visi serveri ir domēna dalībnieki bez jebkādām atbilstošām kļūdām. Serveri ir 2008 R2 un 2012 R2 Standard mašīnas. Man šķiet, ka SQL pusē kaut kas noteikti ir mainījies, un es nevaru novērst problēmas, lai tas notiktu 3 dažādos tīklos un vairākos serveros. Esmu izmantojis super pamata komandas - atstājot pārbaudi un tīrīšanu no darba - un saņemu to pašu kļūdu. Es kā testu esmu izmantojis arī komandu piemērus Ola vietnē ar tādiem pašiem rezultātiem. Esmu to izmēģinājis pavisam jaunā SQL Server ar pamata testa datu bāzi, bez mīlestības. Es jau vairākas dienas esmu izmantojis savu melno jostu Google tīklā ar ļoti vilšanās rezultātiem (varbūt es nezinu, ko meklēt?).

Ko es ceru iegūt

Es ļoti novērtētu veidu, kā pārbaudīt savienojumus ar tīkla koplietojumiem SQL komandrindas iekšienē, vai dažus materiālus, ko lasīt, kas mani tur nokļūtu. Man nav iebildumu lasīt, ka esmu kompetents sistēmu administrators, kurš šajā jautājumā vienkārši atrodas ārpus viņa dziļumiem. Esmu visu izlasījis Olas vietnē, un praktiski tik un tā izmantoju piemēru komandas burtiski (un viņi strādāja vairākus mēnešus !?). Es strādāšu pie šī un šajā nedēļas nogalē, un jebkura palīdzība vai norādījums, ko ikviens var sniegt, tiks novērtēts ļoti augstu.


Kāds ir pareizais pitona kods, nospiežot & ldquoI & rdquo un atlasot LocRotScale?

Es jau esmu veicis fiktīvu testu, un visi pārējie mani kodi darbojas. Vienīgais, kas neizdodas, ir izsaukt bpy.ops.anim.keyframe_insert_menu (type = 'LocRotScale'), kas parādās, nospiežot I un darot to manuāli. Kļūda, ko saņemu, ir:

Fails "D: Blender 2.79 scripts modulis bpy ops.py", 189. rinda, zvanu ret = op_call (self.idname_py (), None, kw) TypeError: py argu konvertēšana operatora rekvizītos: enum "location" nav atrodama mapē ('Location', 'Rotation', 'Scaling', 'BUILTIN_KSI_LocRot', 'LocRotScale' , 'BUILTIN_KSI_LocScale', 'BUILTIN_KSI_RotScale', 'BUILTIN_KSI_DeltaLocation', 'BUILTIN_KSI_DeltaRotation', 'BUILTIN_KSI_DeltaScal)

Mana skripta ideja ir vienkārša, sarakstā ir 8 koordinātas, kuras es vēlos pārskatīt un pielietot katru koordinātu kubam.

  1. Kadrs: iestatiet pašreizējo kadru laika skalā, lai sākuma kadrs būtu 0
  2. Es paņemtu sarakstā koordinātu [i] un pielietotu to kubam
  3. Pēc tam es ievadītu kuba atrašanās vietu animācijai
  4. katru reizi atjauniniet current_frame par = + 4. S0 rāmis 0, 4, 8. būtu atslēgkadri.

Visas pārējās darbības darbojas, ja es komentēju 3. soli, es redzētu, kā mans kubs pārvietojas no vienas vietas uz otru, man vienkārši jāzina, kā katru vietu ievadīt animācijai!


1 Atbilde 1

Dažas API izmaiņas ir jaunākas nekā citas

Bmesh from object metodei 2. argumentam ir jābūt depsgrāfam, nevis ainai, jo IIRC tas bija iepriekš, aptuveni, kad tika rakstīta atbilde.

Iepazīstieties ar jaunākiem dokumentiem, taču par šo saturu ļoti ieteicams izmantot konsoles automātiskās pabeigšanas funkciju

pamanīs, ka depsgraph nepadara doc virkni, skaidri tas ir arguments.

Pārbaudes tīrīšana. Esat veicis minimālas izmaiņas, lai tas darbotos kā rāmja maiņas pasta apstrādātājs. Kā testa objektu esat izmantojis 256 vert & quotCircle & quot,izvirzot prasību, ka tai ir vismaz tikpat daudz vertu kā leņķu skaitam.)

Skripts rada indeksa kļūdu acīm ar pārāk maz vertu.

Metode ir piesaistīta rāmja maiņas apstrādātājam, tāpēc, kad rāmis mainās, tas darīs & quotits lieta & quot;

_Piemērs, pārvietojot pāris kubus, spēlējot animāciju, lai izsauktu (rīkotos) uz rāmja maiņas notikuma tīkla atjauninājumu ar apdarinātāja kodu.


Pirmā atmiņas spēle ar PyQt un OOP

Tā ir mana pirmā reize šajā vietnē. Esmu uzrakstījis šo ļoti vienkāršo Python kodu ar PyQt5, lai izveidotu atmiņas spēli. Tā kā es neesmu ļoti pazīstams ar OOP (bet es cenšos būt!), Es ceru, ka kāds varētu mani norādīt, kur es varētu uzlabot savu spēli.

Pašreizējā situācijā visa lieta darbojas, bet tai trūkst glītas veidnes (to es uzlabošu otrajā fāzē). Mani šobrīd vairāk interesē saprast, vai manu kodu varētu kaut kā labāk organizēt (piemēram, sadalot to dažādās klasēs / apakšklasēs, nevis daudzo esošo metožu vietā).

  1. lietotājs izvēlas (JPG) attēlu mapi
  2. tiek izveidots režģis ar visiem attēliem, bet katru attēlu sedz attēls "back.jpg" (tam jāpaliek vienā mapē ar kodu)
  3. sākas spēle

Būtībā es visu daru, izmantojot Qgridlayout attēlus, kas tiek ievietoti pogās ar notikumu klausītājiem. Kad tiek raidīts "onclick" signāls, tiek analizēts atribūts self.status un spēle tiek restartēta vai turpinās atbilstoši tam.

Pēdējā lieta: kārtis (attēli) pašlaik netiek sajaukti, man joprojām ir jāievieš šī funkcija (pretējā gadījumā spēle būtu pilnīgi garlaicīga.).


Tieši tā - objekta fiziskā atrašanās vieta. Tās maiņa neietekmēs neko citu, ja vien ārēja sistēma to neizmanto vai neatjaunina. Piemēram, lielos uzņēmumos šādus atribūtus varētu aizpildīt un sinhronizēt ar aktīvu izsekošanas datu bāzi, izmantojot IdM sistēmu, piemēram, MS ILM / FIM.

Ja printeris tiek izdarīts pareizi, printera atrašanās vietas noteikšana ir forša ikvienam. Operētājsistēmā Windows 7 skats “atrast printeri” tiek automātiski filtrēts jūsu fiziskajā atrašanās vietā. Šī ir daļa no manuālās iestatīšanas, daļa no IP apakštīkla.

Tāpat kā lielākā daļa lietotāju / administratoru apdzīvoto AD atribūtu, to izmanto neatkarīgi no tā, pēc kā vēlaties to izmantot. Parasti tas būtu objekta fiziskajai atrašanās vietai, kā norāda Kriss Makkeins, bet jūs to varētu izmantot visam, ko vēlaties, un, to darot, varētu būt zināma vērtība, ja esat mazs uzņēmums, kurā ir viss vienā un tajā pašā vietā fiziskā atrašanās vieta, ņemot vērā, ka pēc noklusējuma atrašanās vieta tiek parādīta redzamāk nekā CustomAttribute8 un tamlīdzīgi.

Pirms neilga laika es redzēju AD vidi, kurā sysadmin to izmantoja, lai mazliet smalki apvainotu lietotājus ar tādām vietām kā mākoņos, piegādes zaudējumu, Ķelnē ievietotu vietu utt. (Domājiet, ka lietotāja galva ir.) patiešām ierobežo tikai jūsu radošums (un, iespējams, ļaunprātības līmenis).


Kāpēc šīs avārijas vietas neatradās caur ELT?

2019. gada 14. janvārī plkst. 9.10 pēc Indonēzijas laika tika atrasts avarējušā Lion Air JT-610 CVR. Vēl viena svarīga ierīce tika atrasta agrāk.

Indonēzijā ūdenī ietriecās trīs modernas lidmašīnas:

Adam Air, reģistrācijas numurs PK-KKW, Boeing 737-400, reiss KI514, 2007. gada 1. janvārī, avarēja Majēnas jūrā, Iekšējā atsauces sistēma (IRS), atpūtās 2000m zem jūras virsmas.

Air Asia, reģistrācijas numurs PK-AXC, Airbus A320-216, reiss QZ8501, avarēja 2015. gada 28. decembrī Karimunjawa jūrā neveiksmes dēļ ar stūres-ceļojuma ierobežotājs.

Lion Air, reģistrācijas numurs PK-LQP, Boeing 737 Max-8, reiss JT-610, avarēja 2018. gada 28. novembrī Javas jūrā. Avārijas cēlonis joprojām tiek izmeklēts.

Šīs trīs avārijas vietas atrada nevis elektronisko instrumentu sistēma, bet gan zvejnieki.

Tad mans jautājums ir: kāpēc mūsdienu lidmašīna nav atradusies caur tās ELT?


Skatīties video: ГИС-Форум 2015. Мастер-класс Основы разработки плагинов для QGIS на Python (Oktobris 2021).