Meer

QGIS Attributen samenvoegen op locatie werkt niet vanuit het Python-script

QGIS Attributen samenvoegen op locatie werkt niet vanuit het Python-script


Ik heb een shapefile met punten, en een shapefile met polygonen. Ik wil de attribuutwaarde optellen van alle punten die zich binnen een bepaalde polygoon bevinden, en ik zou dit willen doen voor elke polygoon in mijn dataset. De tool QGIS Join Attributes by Location helpt me om dit te bereiken en werkt perfect wanneer ik de tool gebruik via de Processing Toolbox. Ik zou de tool echter willen opnemen in een geautomatiseerd script. Ik heb veel verschillende argumenten geprobeerd, maar mijn code werkt (nog) niet en resulteert in een dataset waarin het nieuwe polygoonkenmerk NULL-waarden heeft.

Ik gebruik de volgende code, die precies hetzelfde zou moeten zijn als de tool die wordt uitgevoerd wanneer ik deze vanuit de Processing Toolbox benader (ik heb zelfs geprobeerd exact dezelfde code te kopiëren en uit te voeren vanuit het venster Geschiedenis en logboek):

sum = processing.runalg("qgis:joinattributesbylocation","polygonlayer.shp", "pointlayer.shp","['bevat']",1,"sum",1,Geen)

Ik gebruik QGIS 2.8.2 Wien.


  • Voor QGIS 2.8.2 met Verwerken plug-in 2.9.0:

    processing.runalg("qgis:joinattributesbylocation", laag1, laag2, u'bevat', 1, 'som', 1, Geen)
  • Voor QGIS 2.12.2 met Verwerken plug-in 2.12.2:

    processing.runalg("qgis:joinattributesbylocation", laag1, laag2, u'bevat', 0, 1, 'som', 1, Geen)

    (let op de extra parameter voor "precisie")


Hoe kan ik de directory van het script vinden? [duplicaat]

Ik gebruik os.getcwd() om de maplocatie van het scriptbestand te krijgen. Wanneer ik het script vanaf de opdrachtregel uitvoer, krijg ik het juiste pad, terwijl wanneer ik het uitvoer vanuit een script dat door code wordt uitgevoerd in een Django-weergave, het / .

Hoe kan ik het pad naar het script krijgen vanuit een script dat wordt uitgevoerd door een Django-weergave?

BIJWERKEN:
De antwoorden tot nu toe samenvattend - os.getcwd() en os.path.abspath() geven beide de huidige werkdirectory die al dan niet de directory is waar het script zich bevindt. In mijn webhostconfiguratie geeft __file__ alleen de bestandsnaam zonder het pad.

Is er in Python geen manier om (altijd) het pad te ontvangen waarin het script zich bevindt?


Locatie van object frame tot frame ophalen Blender 2.81 +

Ik heb een script dat een curvepad genereert en een object instelt om het pad te volgen, ik kan het object correct zien bewegen in de animatiebeweging, en het beweegt ook naar de juiste locatie (tenminste visueel in de kijkpoort, de coördinaten wanneer u drukt op n niet wijzigen) wanneer ik bpy.context.scene.frame_set(desirved_frame) gebruik. Wanneer ik echter probeer de locatie en rotatie van dat object te krijgen in het frame dat ik heb ingesteld, retourneert het gewoon de oorspronkelijke locatie van het object in frame 0. Hieronder staat de code die ik heb gebruikt om de animatiegegevens te genereren en wat ik ' m gebruik om te proberen de locatie te achterhalen.

Ik heb ook geprobeerd de laatste lus te vervangen door:

Beide methoden printen gewoon de originele locatie van het object uit.

Als ik deze documentatie lees, weet ik niet zeker hoe ik de voorbeelden die ze laten zien, zou gebruiken om de geëvalueerde locatie en rotatie te extraheren uit de klasse die ze registreren, of hoe ik zelfs de execute-methode moet aanroepen.

Hieronder staan ​​​​enkele oplossingen en antwoorden die ik heb gelezen en geprobeerd, zonder succes:

Ik weet echt niet zeker wat ik verkeerd doe, aangezien sommige van de vragen die ik heb bekeken, vrij veel lijken op mijn probleem.


Proberen om het huidige framenummer op te halen voor gebruik in Cycles-deeltjesverouderingsmateriaal

Ik probeer met Blender 2.72a een cyclisch materiaal te maken om een ​​deeltje te laten opflakkeren wanneer het sterft in een botsing met een ander deeltje.

Het is me gelukt om deeltjes aan te vallen en andere deeltjes te doden met behulp van Boid-fysica, maar de dode deeltjes iets anders laten doen dan verdwijnen of daar blijven zitten, blijkt een stekelig probleem te zijn.

Ik speel verschillende benaderingen af. Mijn huidige poging is om emissiesterkte en transparantie te stimuleren op basis van hoe vroegtijdig een deeltjesdood is. Een deeltje dat sterft bij een botsing heeft een snelheid van nul en een leeftijd die kleiner is dan zijn levensduur. Omdat dode deeltjes echter 0 aangeven voor hun leeftijd, kun je dat niet gebruiken om te bepalen of een deeltje gewoon op onnatuurlijke wijze is gestorven, of dat het honderd frames geleden is verlopen. Ik kan dit omzeilen als ik het huidige framenummer voor de scène kan ophalen en ik heb zelfs het codefragment: bpy.data.scenes['CYCLES'].frame_current Ik heb het opgeslagen als een script en ernaar verwezen in een script Knooppunt dat ik kon toevoegen aan mijn deeltjeszaad, maar ik heb geen toegang tot de opgehaalde waarde.

Ik dacht erover om de scriptlet aan te passen om een ​​globale variabele of attribuut te vullen met het framenummer en deze vervolgens te openen met het Attribuutknooppunt.

Dus hoe kan ik het huidige framenummer opslaan op een manier die toegankelijk is voor de materiaaleditor? Ik heb een link naar mijn blendbestand toegevoegd. Het juiste antwoord hoeft mijn code niet te implementeren. Als je een idee hebt dat niets met python te maken heeft, wil ik het nog steeds horen.


Ola Hallengren's SQL-back-up naar netwerklocatie werkt niet

Ik heb de SQL Server Maintenance Solution van Ola Hallengren de afgelopen jaren op verschillende SQL Express-servers (2008 tot 2012 R2) opgezet. Ik heb onlangs problemen gekregen met de netwerkback-upcomponent op allemaal een nieuwe. Ik heb dit in het verleden op verschillende servers gehad, dus ik weet dat het kan werken, maar ik kan er niet achter komen wat het nu verhindert om te werken. Als een punt van belang ben ik geen DBA en weet ik bijna niets over SQL, daarom ben ik hier.

Het probleem

Op één server in het bijzonder heb ik ongeveer anderhalf jaar geleden een onderhoudsschema opgesteld. Het maakte 's nachts back-ups naar een andere lokale server met behulp van een UNC-pad (en verschillende andere opdrachten). De code voor het script is als volgt:

Dit werkte een tijdje goed, maar stopte ongeveer een maand geleden met werken. Ik heb het ingesteld om lokaal een back-up te maken, vervolgens een string toegevoegd om het naar de externe locatie te kopiëren en een script op de externe server om oude back-ups op te schonen. Niet ideaal.

Ik heb geprobeerd het in de opdrachtregel uit te voeren als mezelf en een supermachtigingsaccount. Dit is de foutmelding die ik in alle gevallen krijg:

Wat ik heb gedaan

Het is duidelijk dat SQL denkt dat de netwerklocatie niet bestaat, dus ik heb geprobeerd wat ik kan om te controleren of alle netwerkgerelateerde zaken in orde zijn. Ik trok een nieuwe kopie van het script en maakte alle objecten en taken opnieuw. Ik heb gecontroleerd of de andere scripts (integriteitscontroles, statistische updates, enz.) werken. Ik heb een script gemaakt dat dezelfde referenties gebruikt als het back-upscript om de xcopy van de lokale back-ups naar de doelserver uit te voeren, dus ik heb de juiste share-/NTFS-referenties. Dat account is een domeinaccount (AD) dat speciaal is gemaakt voor SQL-back-ups. Ik kan lokaal een back-up maken (met dat account), dus ik heb databaserechten. Ik kan met Windows Verkenner naar de share navigeren als back-upaccount. Ik kan de bestanden handmatig naar de externe locatie kopiëren met Windows Verkenner met behulp van de back-upaccount.

Ik krijg hetzelfde probleem ook op verschillende andere netwerken, wat me bij SF heeft gebracht. Ik ben in 2008 R2- en 2012-domeinen, alle servers zijn domeinleden zonder relevante fouten. De servers zijn 2008 R2 en 2012 R2 Standard-machines. Ik heb het gevoel dat er iets aan de SQL-kant moet zijn veranderd dat ik niet kan oplossen om dit op 3 verschillende netwerken en verschillende servers te laten gebeuren. Ik heb superbasiscommando's gebruikt - verificatie en opschonen van de baan verlaten - en kreeg dezelfde foutmelding. Ik heb de voorbeeldopdrachten op de site van Ola ook als test gebruikt, met dezelfde resultaten. Ik heb het geprobeerd op een gloednieuwe SQL Server met een basistestdatabase, geen liefde. Ik heb een aantal dagen mijn zwarte band in Google gebruikt met zeer teleurstellende resultaten (misschien weet ik niet waar ik op moet letten?).

Wat ik hoop te krijgen

Ik zou echt een manier waarderen om verbindingen met netwerkshares binnen de SQL-opdrachtregel te testen, of wat materiaal om te lezen dat me daar zou brengen. Ik vind het niet erg om te lezen dat ik een bekwame systeembeheerder ben die gewoon buiten zijn diepgang in deze kwestie zit. Ik heb alles gelezen op de site van Ola, en ik gebruik de voorbeeldcommando's toch praktisch letterlijk (en ze hebben een aantal maanden gewerkt!?). Ik zal hier af en toe aan werken dit weekend, en alle hulp of aanwijzingen die iemand kan geven, zou enorm worden gewaardeerd.


Wat is de juiste python-code om op &ldquoI&rdquo te drukken en LocRotScale te selecteren?

Ik heb al een dummy-test gedaan en de rest van mijn code werkt. Het enige dat niet lukt, is het aanroepen van bpy.ops.anim.keyframe_insert_menu(type = 'LocRotScale') , wat verschijnt als je op I drukt en het handmatig doet. De fout die ik krijg is:

Bestand "D:Blender2.79scriptsmodulespyops.py", regel 189, in bel ret = op_call(self.idname_py(), None, kw) TypeError: py-args converteren naar operatoreigenschappen: enum "location" niet gevonden in ('Location', 'Rotation', 'Scaling', 'BUILTIN_KSI_LocRot', 'LocRotScale' , 'BUILTIN_KSI_LocScale', 'BUILTIN_KSI_RotScale', 'BUILTIN_KSI_DeltaLocation', 'BUILTIN_KSI_DeltaRotation', 'BUILTIN_KSI_DeltaScal)

Het idee van mijn script is eenvoudig, er zijn 8 coördinaten in een lijst die ik wil doorlopen en elke coördinaat op een kubus wil toepassen.

  1. Frame_stel het huidige frame op de tijdlijn in, zodat het startframe op 0 . staat
  2. Ik zou de coördinaat [i] in de lijst nemen en toepassen op de kubus
  3. Ik zou dan de locatie van de kubus voor animatie invoeren
  4. update het current_frame elke keer met =+ 4. S0 frame 0, 4, 8. zouden de keyframes zijn.

Alle andere stappen werken, als ik stap 3 becommentarieer, zou ik mijn kubus van de ene locatie naar de andere zien bewegen, ik moet alleen weten hoe ik elke locatie voor animatie moet invoeren!


1 antwoord 1

Sommige API-wijzigingen zijn nieuwer dan andere

De bmesh from object-methode vereist dat argument 2 een depsgraph is, geen scène, zoals IIRC het was, ongeveer toen het antwoord werd geschreven.

Raadpleeg recentere documenten, maar raad voor dit soort zaken ten zeerste aan om de autocomplete-functie van de console te gebruiken

zal opmerken dat depsgraph de doc-string niet maakt, het is duidelijk een argument.

Proef opruimen. Heb minimale wijzigingen aangebracht om dit te laten werken als een frame change post-handler. Heb een 256 vert "Circle" als testobject gebruikt, (waardoor het de eis krijgt dat het minstens zoveel verts heeft als het aantal hoeken.)

Het script genereert een indexfout voor mesh met te weinig verts.

De methode is gekoppeld aan een frame change handler, dus het zal "zijn ding" doen wanneer het frame verandert.

_Een voorbeeld van het verplaatsen van een paar kubussen terwijl de animatie wordt afgespeeld, om bij een frameveranderingsgebeurtenis de mesh-update met de handlercode aan te roepen (af te handelen).


Eerste geheugenspel met PyQt en OOP

Dit is dus mijn allereerste keer op deze site. Ik heb deze zeer eenvoudige Python-code met PyQt5 geschreven om een ​​Memory Game te maken. Aangezien ik niet erg bekend ben met OOP (maar ik probeer het wel te zijn!), hoop ik dat iemand me kan wijzen waar ik mijn spel kan verbeteren.

Zoals het er nu uitziet, werkt het hele ding, maar het ontbreekt aan een mooie sjabloon (dit ga ik in een tweede fase verbeteren). Waar ik nu meer in geïnteresseerd ben, is om te begrijpen of mijn code op de een of andere manier beter kan worden georganiseerd (bijvoorbeeld door het op te splitsen in verschillende klassen/subklassen, in plaats van de vele aanwezige methoden).

  1. de gebruiker kiest een map met (JPG) afbeeldingen
  2. er wordt een raster gevormd met alle afbeeldingen, maar elke afbeelding wordt bedekt door de afbeelding "back.jpg" (deze moet in dezelfde map blijven als de code)
  3. het spel begint

Eigenlijk doe ik eigenlijk alles met behulp van afbeeldingen in een Qgridlayout, die in knoppen worden geplaatst met gebeurtenislisteners. Wanneer een "onclick"-signaal wordt uitgezonden, wordt het self.status-attribuut geanalyseerd en wordt het spel opnieuw gestart of gaat het verder.

Nog een laatste ding: de kaarten (afbeeldingen) zijn nu niet geschud, ik moet deze functie nog implementeren (anders zou het spel helemaal saai worden. ).


Precies dat - de fysieke locatie van het object. Het wijzigen ervan heeft geen invloed op iets anders, tenzij een extern systeem het gebruikt of bijwerkt. In grote ondernemingen kunnen dergelijke kenmerken bijvoorbeeld worden ingevuld vanuit en gesynchroniseerd met een database voor het volgen van activa met behulp van een IdM-systeem zoals MS ILM/FIM.

Locatie tacking van printers is cool voor iedereen als het goed wordt gedaan. In Windows 7 wordt uw "vind printer"-weergave automatisch gefilterd op uw fysieke locatie. Dit is deels handmatige installatie, deels IP-subnet.

Zoals de meeste door gebruikers/admin ingevulde AD-kenmerken, wordt het gebruikt voor waar je het ook voor wilt gebruiken. Over het algemeen zou dat voor de fysieke locatie van het object zijn, zoals Chris McKeown opmerkt, maar je zou het kunnen gebruiken voor alles wat je maar wilt, en het kan enige waarde hebben om dit te doen als je een klein bedrijf bent met alles in hetzelfde fysieke locatie, aangezien Locatie standaard prominenter wordt weergegeven dan CustomAttribute8 en dergelijke .

Ik zag een tijdje geleden een AD-omgeving waar de systeembeheerder het gebruikte om de gebruikers enigszins subtiel te beledigen met locaties zoals in de wolken, verloren in de scheepvaart, ondergebracht in Keulen, enzovoort (denk dat het hoofd van de gebruiker is.), dus de mogelijke toepassingen worden echt alleen beperkt door je creativiteit (en misschien het niveau van boosaardigheid).


Waarom zijn deze crashlocaties niet via ELT gevonden?

Op 14 januari 2019, om 9.10 uur Indonesische tijd, is de CVR van de gecrashte Lion Air JT-610 gevonden. Een ander vitaal apparaat werd eerder gevonden.

Er zijn drie moderne vliegtuigen te water gestort in Indonesië:

Adam Air, registratie PK-KKW, Boeing 737-400, vlucht KI514, stortte op 1 januari 2007 neer in de Majene Zee als gevolg van het falen van de Intern referentiesysteem (IRS), rustte op 2.000 meter onder het zeeoppervlak.

Air Asia, registratie PK-AXC, Airbus A320-216, vlucht QZ8501, stortte op 28 december 2015 neer in de Karimunjawa Zee als gevolg van het falen van de roer-reisbegrenzer.

Lion Air, registratie PK-LQP, Boeing 737 Max-8, vlucht JT-610, stortte op 28 november 2018 neer in de Javazee. De oorzaak van de crash wordt nog onderzocht.

Die drie crashlocaties zijn niet gevonden door het elektronische instrumentensysteem, maar door vissers.

Dan is mijn vraag: waarom is het moderne vliegtuig niet via zijn ELT gelokaliseerd?


Bekijk de video: QGIS Python PyQGIS - Select features from a vector layer