From 0d97921999bb5e1470f50d4fa0d1fc4bfd287fb4 Mon Sep 17 00:00:00 2001 From: AlexP077 Date: Sat, 18 Feb 2023 19:36:20 +0300 Subject: [PATCH] add_geometry_field --- service/migrations/0002_auto_20230218_1927.py | 27 +++++++++++++++++++ service/models.py | 5 ++-- service/utils.py | 9 ++++--- 3 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 service/migrations/0002_auto_20230218_1927.py diff --git a/service/migrations/0002_auto_20230218_1927.py b/service/migrations/0002_auto_20230218_1927.py new file mode 100644 index 0000000..aeef496 --- /dev/null +++ b/service/migrations/0002_auto_20230218_1927.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2 on 2023-02-18 16:27 + +import django.contrib.gis.db.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('service', '0001_initial'), + ] + + operations = [ + migrations.RemoveField( + model_name='placementpoint', + name='lat', + ), + migrations.RemoveField( + model_name='placementpoint', + name='lon', + ), + migrations.AddField( + model_name='placementpoint', + name='geometry', + field=django.contrib.gis.db.models.fields.PointField(null=True, srid=4326, verbose_name='Координаты'), + ), + ] diff --git a/service/models.py b/service/models.py index ad18b10..4c99e23 100644 --- a/service/models.py +++ b/service/models.py @@ -1,10 +1,9 @@ from django.db import models - +from django.contrib.gis.db import models as gis_models class PlacementPoint(models.Model): location_id = models.IntegerField(null=True, blank=True, verbose_name='Id локации') - lon = models.FloatField(verbose_name="Долгота", null=True, blank=True) - lat = models.FloatField(verbose_name="Широта", null=True, blank=True) + geometry = gis_models.PointField(srid=4326, null=True, verbose_name='Координаты') status = models.TextField(null=True, blank=True, verbose_name='Статус') category = models.TextField(null=True, blank=True, verbose_name='Категория') prediction = models.IntegerField(null=True, blank=True, verbose_name='Прогноз') diff --git a/service/utils.py b/service/utils.py index df9bc71..f9d6b6c 100644 --- a/service/utils.py +++ b/service/utils.py @@ -64,7 +64,8 @@ def raschet(tables, filters, koefs, method): def load_data(filepath: str): models.PlacementPoint.objects.all().delete() - df = pd.read_csv(filepath).iloc[:, 1:].to_dict('records') - for data in tqdm(df, desc='Loading data...'): - dt = models.PlacementPoint(**data) - dt.save() + df = pd.read_csv(filepath).iloc[:, 1:] + for row in tqdm(df.to_dict('records'), desc='Loading data...'): + data = {k: row[k] for k in row.keys() if k not in ['lat', 'lon']} + data['geometry'] = f'POINT({row["lon"]} {row["lat"]})' + models.PlacementPoint.objects.create(**data)