geoip2 python django geolocation geodjango geopy

python - geoip2 - Convierte entre sistemas de coordenadas con GeoDjango



django geo ip (2)

Estoy tratando de agregar información de coordenadas a mi base de datos, agregando 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 mi mejor geopy es usar geopy para esto).

Luego 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 GeoDjango tratando de encontrar una manera de hacer esto. Hasta aquí, creo que necesito hacer esto:

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

pero luego, no sé cómo usar ese objeto CoordTransform ... parece ser usado por los objetos de datos de GDAL, pero eso es demasiado para lo que quiero hacer ...


CoordTransform no funcionaría sin GDAL eso es verdad. Pero el resto 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 sus bibliotecas instaladas correctamente, no es necesario utilizar el objeto CoordTransform , el método de transform del objeto puntual hará el trabajo por usted si conoce el valor 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)''