Más

Los atributos de unión de QGIS por ubicación no funcionan desde el script de Python


Tengo un shapefile con puntos y un shapefile con polígonos. Quiero sumar el valor de atributo de todos los puntos que están dentro de un determinado polígono y me gustaría hacer esto para cada polígono en mi conjunto de datos. La herramienta Unir atributos por ubicación de QGIS me está ayudando a lograr esto y funciona perfectamente cuando se usa la herramienta a través de la Caja de herramientas de procesamiento. Sin embargo, me gustaría incluir la herramienta en un script automatizado. Probé muchos argumentos diferentes, pero mi código (todavía) no funciona y da como resultado un conjunto de datos donde el nuevo atributo de polígono tiene valores NULL.

Estoy usando el siguiente código, que debería ser exactamente el mismo que se está ejecutando la herramienta cuando accedo a ella desde Processing Toolbox (incluso intenté copiar y ejecutar exactamente el mismo código desde la ventana Historial y registro):

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

Estoy usando QGIS 2.8.2 Wien.


  • Para QGIS 2.8.2 con Procesando complemento 2.9.0:

    Processing.runalg ("qgis: joinattributesbylocation", layer1, layer2, u'contains ', 1,' sum ', 1, None)
  • Para QGIS 2.12.2 con Procesando complemento 2.12.2:

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

    (tenga en cuenta el parámetro adicional para "precisión")


¿Cómo puedo encontrar el directorio script & # 39s? [duplicar]

Utilizo os.getcwd () para obtener la ubicación del directorio del archivo de script. Cuando ejecuto el script desde la línea de comandos, me da la ruta correcta, mientras que cuando lo ejecuto desde un script ejecutado por código en una vista de Django, imprime /.

¿Cómo puedo obtener la ruta al script desde un script ejecutado por una vista de Django?

ACTUALIZAR:
Resumiendo las respuestas hasta ahora, os.getcwd () y os.path.abspath () dan el directorio de trabajo actual, que puede ser o no el directorio donde reside el script. En la configuración de mi servidor web, __file__ proporciona solo el nombre del archivo sin la ruta.

¿No hay alguna forma en Python de (siempre) poder recibir la ruta en la que reside el script?


Obtener la ubicación del objeto fotograma a fotograma Blender 2.81 +

Tengo un script que genera una ruta curva y establece un objeto para que siga la ruta, puedo ver el objeto moviéndose correctamente en el movimiento de animación, y también se mueve a la ubicación correcta (al menos visualmente en el puerto de vista, las coordenadas cuando presiona n no cambiar) cuando uso bpy.context.scene.frame_set (desirved_frame). Sin embargo, cuando trato de obtener la ubicación y la rotación de ese objeto en el cuadro que configuré, simplemente devuelve la ubicación original del objeto en el cuadro 0. A continuación se muestra el código que he usado para generar los datos de animación y lo que ' Estoy usando para intentar obtener la ubicación.

También intenté reemplazar el ciclo final con:

Ambos métodos simplemente imprimen la ubicación original del objeto.

Al leer esta documentación, no estoy seguro de cómo usaría los ejemplos que muestran para extraer la ubicación evaluada y la rotación de la clase que registran, o incluso cómo llamar al método de ejecución.

A continuación se muestran algunas soluciones y respuestas que he leído e intentado, sin éxito:

Realmente no estoy seguro de qué estoy haciendo mal, ya que algunas de las preguntas que he analizado son bastante similares a mi problema.


Intentando recuperar el número de fotograma actual para usarlo en el material de la edad de partículas de Cycles

Estoy tratando de crear un material de ciclos para hacer que una partícula brote cuando muere en una colisión con otra partícula usando Blender 2.72a.

He logrado que las partículas ataquen y maten a otras partículas usando la física de Boid, pero lograr que las partículas muertas hagan cualquier cosa además de desaparecer o quedarse allí está demostrando ser un problema espinoso.

Estoy escupiendo varios enfoques. Mi intento actual es impulsar la fuerza y ​​la transparencia de las emisiones en función de cuán inoportuna es la muerte de una partícula. Una partícula que muere en una colisión tendrá una velocidad de cero y una edad menor que su vida útil. Sin embargo, dado que las partículas muertas reportan 0 para su edad, no puede usar eso para determinar si una partícula murió de forma no natural o si expiró hace cien fotogramas. Puedo evitar esto si puedo recuperar el número de fotograma actual de la escena e incluso tengo el fragmento de código: bpy.data.scenes ['CYCLES']. Frame_current Lo guardé como un script y lo mencioné en un Script Nodo que pude agregar a mi semilla de partículas, pero no puedo acceder al valor recuperado.

Estaba pensando en modificar el scriptlet para completar una variable o atributo global con el número de cuadro y luego acceder a él con el nodo Atributo.

Entonces, ¿cómo puedo almacenar el número de fotograma actual de una manera accesible para el editor de material? He incluido un enlace a mi archivo de mezcla. La respuesta correcta no tiene por qué implementar mi código. Si tienes una idea que no tiene nada que ver con Python, todavía quiero escucharla.


Ola Hallengren & # 39s SQL Backup to Network Location no funciona

He configurado la solución de mantenimiento de SQL Server de Ola Hallengren en varios servidores SQL Express (2008 a 2012 R2) en los últimos años. Recientemente comencé a tener problemas con el componente de respaldo de red en todos ellos, uno nuevo. He tenido esto funcionando en varios servidores en el pasado, así que sé que puede funcionar, pero no puedo entender qué impide que funcione ahora. Como punto de interés, no soy un DBA y no sé casi nada sobre SQL, por eso estoy aquí.

El problema

En un servidor en particular, configuré un programa de mantenimiento hace aproximadamente un año y medio. Hacía copias de seguridad todas las noches en otro servidor local utilizando una ruta UNC (y varios otros comandos). El código del script es el siguiente:

Esto funcionó bien durante bastante tiempo, pero dejó de funcionar hace aproximadamente un mes. Lo configuré para hacer una copia de seguridad local, luego agregué una cadena para copiarlo en la ubicación remota y un script en el servidor remoto para limpiar las copias de seguridad antiguas. No ideal.

Intenté ejecutarlo en la línea de comandos como yo mismo y una cuenta de superpermisos. Este es el error que recibo en todos los casos:

Qué he hecho

Obviamente, SQL cree que la ubicación de la red no existe, así que he intentado todo lo que he podido para comprobar que todas las cosas del lado de la red están en orden. Saqué una nueva copia del script y recreé todos los objetos y trabajos. He comprobado que los demás scripts (comprobaciones de integridad, actualizaciones de estadísticas, etc.) funcionan. Creé un script que usa las mismas credenciales que el script de respaldo para ejecutar la copia xcopy de los respaldos locales en el servidor de destino, por lo que tengo las credenciales de recurso compartido / NTFS adecuadas. Esa cuenta es una cuenta de dominio (AD) creada específicamente para copias de seguridad de SQL. Puedo hacer una copia de seguridad localmente (con esa cuenta), por lo que tengo permisos de base de datos. Puedo navegar hasta el recurso compartido como cuenta de respaldo usando el Explorador de Windows. Puedo copiar manualmente los archivos a la ubicación remota usando el Explorador de Windows usando la cuenta de respaldo.

También tengo este mismo problema en varias otras redes, que es lo que me llevó a SF. Estoy en los dominios 2008 R2 y 2012, todos los servidores son miembros del dominio sin errores relevantes. Los servidores son máquinas estándar 2008 R2 y 2012 R2. Siento que algo debe haber cambiado en el lado de SQL que no puedo solucionar para que esto suceda en 3 redes diferentes y varios servidores. He usado comandos súper básicos, dejando la verificación y la limpieza fuera del trabajo, y obtengo el mismo error. También aproveché los comandos de ejemplo en el sitio de Ola como prueba, con los mismos resultados. Lo probé en un servidor SQL nuevo con una base de datos de prueba básica, sin amor. He usado mi cinturón negro en Google durante varios días con resultados muy decepcionantes (¿tal vez no sé qué buscar?).

Lo que espero conseguir

Realmente agradecería una forma de probar las conexiones a los recursos compartidos de la red dentro de la línea de comandos SQL, o algunos materiales para leer que me llevarían allí. No me importa leer. Soy un administrador de sistemas competente que simplemente está fuera de su alcance en este tema. He leído todo en el sitio de Ola, y prácticamente estoy usando los comandos de ejemplo textualmente de todos modos (¿¡y funcionaron durante varios meses !?). Trabajaré en esto de vez en cuando este fin de semana, y cualquier ayuda o dirección que alguien pueda proporcionar será muy apreciada.


¿Cuál es el código Python correcto para presionar & ldquoI & rdquo y seleccionar LocRotScale?

Ya hice una prueba ficticia y todo el resto de mi código funciona. Lo único que falla es llamar a bpy.ops.anim.keyframe_insert_menu (type = 'LocRotScale'), que es lo que aparece si presionas I y lo haces manualmente. El error que recibo es:

Archivo "D: Blender 2.79 scripts modules bpy ops.py", línea 189, en llamada ret = op_call (self.idname_py (), None, kw) TypeError: Conversión de argumentos py a propiedades del operador: enum "location" no se encuentra en ('Location', 'Rotation', 'Scaling', 'BUILTIN_KSI_LocRot', 'LocRotScale' , 'BUILTIN_KSI_LocScale', 'BUILTIN_KSI_RotScale', 'BUILTIN_KSI_DeltaLocation', 'BUILTIN_KSI_DeltaRotation', 'BUILTIN_KSI_DeltaScal)

La idea de mi secuencia de comandos es simple, hay 8 coordenadas en una lista que quiero recorrer y aplicar cada coordenada a un cubo.

  1. Frame_set el fotograma actual en la línea de tiempo para que el fotograma inicial sea 0
  2. Tomaría la coordenada [i] de la lista y la aplicaría al cubo
  3. Luego teclearía la ubicación del cubo para la animación.
  4. actualice el current_frame por = + 4 cada vez. El fotograma S0 0, 4, 8. serían los fotogramas clave.

Todos los demás pasos funcionan, si comento el paso número 3, vería que mi cubo se mueve de una ubicación a otra, ¡solo necesito saber cómo teclear cada ubicación para la animación!


1 respuesta 1

Algunos cambios de API son más recientes que otros

El método bmesh from object requiere que el argumento 2 sea un depsgraph, no una escena, como lo era el IIRC antes, alrededor de cuando se escribió la respuesta.

Consulte documentos más recientes; sin embargo, para este tema, le recomendamos que utilice la función de autocompletar de la consola.

notará que depsgraph no hace la cadena de documentos, claramente es un argumento.

Prueba de limpieza. Hice cambios mínimos para que esto se ejecute como un controlador de publicación de cambio de marco. Ha utilizado un & quotCircle & quot de 256 vert como objeto de prueba, (dándole el requisito de que tenga al menos tantas verts como el número de ángulos.)

El script arroja un error de índice para la malla con muy pocas verts.

El método está conectado a un controlador de cambio de trama, por lo que hará & quot; lo que hace & quot; cuando la trama esté cambiando.

_Un ejemplo moviendo un par de cubos con la animación en reproducción, para llamar (manejar) en un evento de cambio de marco la actualización de la malla con el código del controlador.


Primer juego de memoria con PyQt y OOP

Así que esta es mi primera vez en este sitio. He escrito este código Python muy básico con PyQt5 para crear un juego de memoria. Como no estoy muy familiarizado con OOP (¡pero estoy tratando de estarlo!), Espero que alguien pueda indicarme dónde podría mejorar mi juego.

Tal como está, todo está funcionando pero le falta una plantilla bonita (esto es algo que voy a mejorar en una segunda fase). Lo que me interesa más en este momento es comprender si mi código podría organizarse mejor de alguna manera (por ejemplo, dividiéndolo en diferentes clases / subclases, en lugar de los muchos métodos presentes).

  1. el usuario elige una carpeta de imágenes (JPG)
  2. se forma una cuadrícula con todas las imágenes, pero cada imagen está cubierta por la imagen "back.jpg" (debe permanecer en la misma carpeta que el código)
  3. el juego comienza

Básicamente, estoy haciendo todo usando imágenes en un Qgridlayout, que se colocan en botones con detectores de eventos. Cuando se emite una señal "onclick", se analiza el atributo self.status y el juego se reinicia o continúa de acuerdo con eso.

Una última cosa: las cartas (imágenes) no se barajan en este momento, todavía necesito implementar esta función (de lo contrario, el juego sería completamente aburrido).


Exactamente eso: la ubicación física del objeto. Cambiarlo no afectará a nada más a menos que un sistema externo lo use o lo actualice. Por ejemplo, en las grandes empresas, atributos como este se pueden completar y sincronizar con una base de datos de seguimiento de activos utilizando un sistema IdM como MS ILM / FIM.

La ubicación de las impresoras es genial para todos si se hace correctamente. En Windows 7, la vista "Buscar impresora" se filtra automáticamente a su ubicación física. Esto es en parte configuración manual, en parte subred IP.

Como la mayoría de los atributos de AD llenados por usuarios / administradores, se usa para lo que sea que quieras usar. En general, eso sería para la ubicación física del objeto, como señala Chris McKeown, pero podría usarlo para lo que quisiera, y podría ser útil hacerlo si es una empresa pequeña con todo en el mismo ubicación física, dado que, de forma predeterminada, Location se muestra de forma más destacada que CustomAttribute8 y similares.

Vi un entorno de AD hace un poco donde el administrador de sistemas lo usaba para insultar sutilmente a los usuarios con ubicaciones como en las nubes, perdidas en el envío, alojadas en Colonia, etc. (creo que la cabeza del usuario es), por lo que los posibles usos realmente solo están limitados por su creatividad (y quizás, por su nivel de malicia).


¿Por qué la ubicación del accidente no se localizó a través de ELT?

El 14 de enero de 2019, a las 9.10 hora de Indonesia, se encontró el CVR del Lion Air JT-610 accidentado. Otro dispositivo vital fue encontrado antes.

Hay tres aviones modernos que se estrellaron contra el agua en Indonesia:

Adam Air, matrícula PK-KKW, Boeing 737-400, vuelo KI514, el 1 de enero de 2007, se estrelló en Majene Sea debido a la falla con el Sistema de referencia interno (IRS), descansaba a 2.000 metros por debajo de la superficie del mar.

Air Asia, matrícula PK-AXC, Airbus A320-216, vuelo QZ8501, se estrelló el 28 de diciembre de 2015 en el mar de Karimunjawa, debido a la falla con el limitador de recorrido del timón.

Lion Air, registro PK-LQP, Boeing 737 Max-8, vuelo JT-610, se estrelló el 28 de noviembre de 2018 en el mar de Java. La causa del accidente aún está bajo investigación..

Los tres lugares del accidente no fueron encontrados por el sistema de instrumentos electrónicos, sino por los pescadores.

Entonces mi pregunta es: ¿por qué el avión moderno no ha sido localizado a través de su ELT?


Ver el vídeo: QGIS - UnionCombine Shapefiles - Merge Vector Layers - Method I (Octubre 2021).