Saltar al contenido

¿Cuál es la diferencia entre QgsPoint, QgsPointXY y QgsGeometry.fromPointXY(QgsPointXY()) en PyQGIS?

Este post fue aprobado por expertos así garantizamos la veracidad de nuestra esta sección.

Solución:

  • QgsPoint es una clase de punto que admite valores Z (3D) y M. (¿Qué son Z y M?)

    x, y, z, m = 10, 10, 20, 5
    
    QgsPoint(x, y) # 2D
    # 
    
    QgsPoint(x, y, z) # 3D
    # 
    
    QgsPoint(x, y, z, m) # 3D and M
    # 
    
  • QgsPointXY es una clase de punto utilizada solo para la representación 2D de un punto. No admite valores Z y M.

    QgsPointXY(x, y)
    # 
    
    QgsPointXY(x, y, z)
    # TypeError: QgsPointXY(): arguments did not match any overloaded call:
    #   ....
    
  • QgsPoint y QgsPointXY los objetos se pueden convertir unos en otros.

    qgs_point = QgsPoint(x, y, z, m)
    QgsPointXY(qgs_point)  # In this case Z and M values are dropped.
    # 
    
    qgs_pointxy = QgsPointXY(x, y)
    QgsPoint(qgs_pointxy)
    # 
    

    Debes ser consciente de que un QgsPoint o un QgsPointXY El objeto no es una geometría en términos de PyQGIS.

  • QgsGeometry.fromPointXY() es un static método que se utiliza para crear una geometría de punto en 2D y toma un QgsPointXY objeto como argumento.

    QgsGeometry.fromPointXY(QgsPointXY(x, y))
    # 
    
  • intersect, ìntersection etc. son métodos de QgsGeometry. Entonces no sirven para QgsPoint y QgsPointXY objetos.


  • Entonces, ¿puedo pasar? x, y a fromPointXY como argumentos (QgsGeometry.fromPointXY(x, y) o QgsGeometry.fromPointXY([x, y]))?
    No. Obtienes un error.

  • ¿Puedo pasar un QgsPoint oponerse a fromPointXY?
    No. Obtienes un error. Pero esto funciona: QgsGeometry.fromPointXY(QgsPointXY(qgs_point))

  • Entonces, ¿por qué hay dos clases separadas para crear un punto?
    El modelo de datos vectoriales geográficos se basa en puntos y la mayoría de los usuarios utilizan datos vectoriales 2D. Por lo tanto, supongo que los desarrolladores deben haber decidido definir clases separadas para puntos 2D y 3D para que la información de puntos, que la mayoría de los usuarios no usa, no ocupe más espacio en la memoria.

Eso es todo lo que puedo explicar. Si he proporcionado información incorrecta, corríjala.

QgsPoint se deriva directamente de QgsAbstractGeometry

QgsPuntoXY no se deriva de QgsPoint, pero hay muchos métodos para cambiar de uno a otro.

QgsPointXY se deriva de QgsReferencedPointXY que a su vez proviene QgsReferencedGeometryBase

Encontrarás muchas similitudes.

QgsGeometry.fromPointXY() le permite crear una geometría a partir de un QgsPointXY. Recuerda que para agregar entidades a una capa debes pasar geometrías a las entidades, esto hace que el proceso sea uniforme, pues existen muchos tipos de entidades puntos, líneas, polígonos, multipuntos….

los geometry La clase, por otro lado, facilita los geoprocesos independientemente del tipo de entidad que lo creó.

Puntuaciones y reseñas

Finalizando este artículo puedes encontrar las explicaciones de otros programadores, tú igualmente tienes la opción de mostrar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *