Нужна помощь в создании функции. Django. Gis
Нужна ф-ция построения равноудаленных точек (буфера) от
данной геометрии (точка, линия, полигон), используя Django GIS GEOS
Все попытки построить и отрисовать круг вокруг точки
не дают правильные координаты (выходит элипс) и меньшую площадь.
from django.contrib.gis.db import models
from django.contrib.gis.geos import Point, Polygon
p = geos.Point(50.41585888372478, 30.606115208485846, srid=4326)
width = 1000
buff_width = width * 360 / 40075000
buff = p.buffer(1000, quadsegs=20)
print(f'buff.area: {buff.area/(width*width)}
- отрисовка по координатам дает элипс, вытянутый вдоль меридиана
- buff.area не равен 3,14 км2 (меньше)
Преобразования в другие, отличные от 4326, проекции, например:
p.transform('PROJCS["NA Lambert Azimuthal Equal Area",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["degree",0.0174532925199433]],PROJECTION["Lambert_Azimuthal_Equal_Area"],PARAMETER["false_easting",0.0],PARAMETER["false_northing",0.0],PARAMETER["longitude_of_center",-100.0],PARAMETER["latitude_of_center",45.0],UNIT["meter",1.0]]')
и переводе в srid=4326 дают элипс при отрисовке...
Конфигурация
Python 3.5.2
Django 2.0.6
PostgreSQL 10.15
GDAL 2.2.3
Vue 2.6.8
Vuetify 1.5.5
Vue-Leaflet 1.0.2