Convertir entre sistemas de coordenadas con GeoDjango

Estoy tratando de agregar información de coordenadas a mi base de datos, agregando el soporte django.contrib.gis a mi aplicación. Estoy escribiendo una migración de datos hacia el south que toma las direcciones de la base de datos y le pide a Google las coordenadas (hasta ahora creo que lo mejor es usar geopy para esto).

A continuación, necesito convertir las coordenadas devueltas de WGS84:4326 , el sistema de coordenadas de Google, a WGS84:22186 , mi sistema de coordenadas.

Estoy perdido entre los documentos de GeoDjango tratando de encontrar una manera de hacer esto. Hasta aquí, supongo que necesito hacer esto:

 gcoord = SpatialReference("4326") mycoord = SpatialReference("22186") trans = CoordTransform(gcoord, mycoord) 

pero entonces, no sé cómo usar ese objeto CoordTransform … parece ser usado por los objetos de datos de GDAL, pero eso es una exageración de lo que quiero hacer …

    CoordTransform no funcionaría sin GDAL, eso es cierto. Pero el rest es bastante simple:

     >>> from django.contrib.gis.gdal import SpatialReference, CoordTransform >>> from django.contrib.gis.geos import Point >>> gcoord = SpatialReference(4326) >>> mycoord = SpatialReference(22186) >>> trans = CoordTransform(gcoord, mycoord) >>> pnt = Point(30, 50, srid=4326) >>> print 'x: %s; y: %s; srid: %s' % (pnt.x, pnt.y, pnt.srid) x: 30.0; y: 50.0; srid: 4326 >>> pnt.transform(trans) >>> print 'x: %s; y: %s; srid: %s' % (pnt.x, pnt.y, pnt.srid) x: 11160773.5712; y: 19724623.9117; srid: 22186 

    Tenga en cuenta que el punto se transforma en su lugar.

    Si tiene todas las bibliotecas instaladas correctamente, no es necesario utilizar el objeto CoordTransform , el método de transform del objeto de punto hará el trabajo por usted si conoce el valor de srid deseado.

     >>> from django.contrib.gis.geos import Point >>> pnt = Point(30, 50, srid=4326) >>> desired_srid = 22186 >>> pnt.transform(desired_srid) >>> pnt.ewkt u'SRID=22186;POINT (11160773.5712331663817167 19724623.9116888605058193)'