Geo Django, координаты карт Google неправильно отображаются на листовке с помощью PointField - PullRequest
0 голосов
/ 07 февраля 2020

Пожалуйста, помогите мне в решении этой проблемы.

class RecievingImages(models.Model):
    """Original and Masked Images"""
    name          = models.CharField(max_length = 100, unique = True, primary_key=True)
    cordinate_X   = models.FloatField()
    cordinate_Y   = models.FloatField()
    point         = models.PointField(srid=4326, geography=True, default='POINT(0.0 0.0)')

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = 'Image Mapping'



У меня есть координаты, которые я получил от API карт Google. Пример здесь

cordinate_X : 21.2166277
cordinate_Y : 72.7763859

Технически, эти координаты Гуджарата, Индия фактическая ссылка координат

Теперь, чтобы построить на листочке, я преобразовал это в поле точек со ссылкой на эту ссылку { ссылка }

from django.contrib.gis.geos import Point

for l in RecievingImages.objects.all():
...     l.point = Point(x=l.cordinate_X, y=l.cordinate_Y, srid=4326)
...     l.save()

Теперь, когда я вернулся на страницу администрирования Django, где-то в море неправильно отмечены координаты

After Conversion of Coordinates into Point Field

Спасибо за ваше время.

С уважением


Обновление

После большого количества поиска в Google я обнаружил, что может быть проблема с srid used то есть карты Google могли использовать '3587', а я использовал '4326'. Я пытался изменить это, но получаю ошибку.

    raise NotSupportedError('PostGIS only supports geography columns with an SRID of 4326.')
django.db.utils.NotSupportedError: PostGIS only supports geography columns with an SRID of 4326.

База данных, которую я использовал, - PostGIS.

1 Ответ

1 голос
/ 07 февраля 2020

Я думаю, что ваши координаты поменялись местами. X - долгота, Y - широта.

Ваша ссылка показывает координаты здесь: 21 ° 12'59.9 "N 72 ° 46'35.0" E. Google сначала ставит широту.

Попробуйте:

cordinate_X : 72.7763859
cordinate_Y : 21.2166277
...