Evaluando áreas de intersección con QgsDistanceArea y coordenadas geográficas

Con el uso combinado de las clases QgsDistanceArea y QgsGeometry de PyQGIS es posible determinar áreas de intersección cuyas coordenadas vienen expresadas como geográficas. En la imagen siguiente, se pueden observar tres capas tipo polígono, proyectadas en WGS84, donde la intersección corresponde a la capa de color amarillo ocre.

intersection1

En el código siguiente, las capas que se solapan son expresadas en el formato WKT. Su intersección es evaluada como:

intersection = poly1.Intersection(poly2)

y transformada en un objeto de QgsGeometry de PyQGIS antes de ser usada como un objeto de QgsDistanceArea en la determinación del área.

from osgeo import ogr

wkt1 = "POLYGON ((-112.265717529390756 40.295405550903219,-112.06395602548848 40.251038300576937,-112.041474424832828 40.131025893144837,-112.119365489612065 40.021680482284886,-112.259925447460276 40.057146492781555,-112.387306731088159 40.112635637128001,-112.357382355889314 40.196297362862843,-112.265717529390756 40.295405550903219))"
wkt2 = "POLYGON ((-112.19015106887201227 40.20355924775839185, -112.02047450525257943 40.27281498801122694, -111.83867818708888819 40.22433596983424309, -111.97545827408823982 40.05639079972112881, -112.19015106887201227 40.20355924775839185))"
poly1 = ogr.CreateGeometryFromWkt(wkt1)
poly2 = ogr.CreateGeometryFromWkt(wkt2)

if poly1.Intersection(poly2):
    intersection = poly1.Intersection(poly2)

    pol_intersect = QgsGeometry.fromWkt(intersection.ExportToWkt()).asPolygon()

    area = QgsDistanceArea()
    area.setEllipsoid('WGS84')
    area.setEllipsoidalMode(True)
    area = area.measurePolygon(pol_intersect[0])

    print "area: {:.2f} km2".format(area/1E6)

else:
    "there is not intersection"

Después de ejecutar el código en la Python Console de QGIS, el área fue de 97.85 km2. Si no se usa la clase QgsDistanceArea en la determinación del área se obtiene el valor sin sentido de 0.0103251062.

Anuncios
Esta entrada fue publicada en PyQGIS, SIG, Software Libre. Guarda el enlace permanente.

Una respuesta a Evaluando áreas de intersección con QgsDistanceArea y coordenadas geográficas

  1. Samanta Silva dijo:

    Buenos dias, se que no es el post del tema, pero quiero consultar como activo las propiedades de etiqueta (Me refiero a mover, anclar, girar).
    Te comento tengo una red de riego y en casos se me solapan algunos nombres o no se leen porque caen sobre la linea, quisiera mover solo algunos.
    Active el plugin EasyCustomLabeling pero no seria lo que necesisto.
    Me podrias orientar de como hacerlo? Muchas Gracias.
    Samanta Silva

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s