Por alguna razón, varios usuarios de SIGs se rehusan a reprojectar su data en coordenadas geográficas a proyecciones en metros (o pies) y luego, cuando se ven en la necesidad de determinar algunas propiedades geométricas (áreas, longitudes) o producir cierto tipo de capas como los buffer, se les presentan dificultades.
En el caso de los buffer, si se trabaja con coordenadas geográficas, es necesario pasar previamente las geometrías a coordenadas proyectadas y luego, una vez obtenida, reproyectar al sistema de origen.En el código siguiente, un punto (-112.171129818, 40.1731054115) arbitario (long/lat WGS84) en el estado de Utah (USA) se va proyectar a UTM/12N WGS84 (EPSG:32612) mediante el módulo Python pyproj, posteriormente se va producir un buffer de 1000 m alrededor de ese punto para finalmente reproyectarlo nuevamente a las coordenadas geográficas de origen. Las geometrías se van a manipular mediante el módulo Python shapely y el buffer obtenido, en formato WKT, se visualiza con el plugin QuickWKT de QGIS.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | from shapely.geometry import Point, Polygon import pyproj srcProj = pyproj.Proj(init='EPSG:4326') dstProj = pyproj.Proj(init='EPSG:32612') pt = (-112.171129818, 40.1731054115) x, y = pyproj.transform(srcProj, dstProj, pt[0], pt[1]) pt = Point(x,y) buffer = pt.buffer(1000) buffer_points = zip(buffer.exterior.coords.xy[0], buffer.exterior.coords.xy[1]) proj_buffer_points = [] for point in buffer_points: x = point[0] y = point[1] x, y = pyproj.transform(dstProj, srcProj, x, y) proj_buffer_points.append((x, y)) print Polygon(proj_buffer_points) |
Después de ejecutado el código en consola de bash, el plugin de visualización QuickWKT arrojó el resultado a continuación; con un buffer que presenta una forma elipsoidal.
No obstante, cuando se activa la reproyección al vuelo escogiendo el CRS con EPSG:32612, correspondiente a UTM/12N WGS84, se observa que el buffer es perfectamente circular; tal como se esperaba.
No hay comentarios:
Publicar un comentario