Southを使用して、4326 SRIDの使用から900913にデータを変換するための移行を作成しようとしています。移行後、座標は4326形式のままです。(4326と900913の予測の違いは、900913の方がはるかに大きいため、簡単にわかります)
その移行からのforward()関数とbackward()関数は次のとおりです。
class Migration(SchemaMigration):
def forwards(self, orm):
# Changing field 'ZipCoords.point'
zips = orm.ZipCoords.objects.all()
db.alter_column('itinerary_generator_zipcoords', 'point', self.gf('django.contrib.gis.db.models.fields.PointField')(srid=900913, null=True))
for zip in zips:
zip.point.transform(900913)
zip.save()
def backwards(self, orm):
# Changing field 'ZipCoords.point'
zips = orm.ZipCoords.objects.all()
db.alter_column('itinerary_generator_zipcoords', 'point', self.gf('django.contrib.gis.db.models.fields.PointField')(null=True))
for zip in zips:
zip.point.transform(4326)
zip.save()
DjangoAdminを使用して値を確認しています。また、興味深いことに、この移行は逆に「機能」し、座標をはるかに小さい(ただし正しくない)数値に変換します。