You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.6 KiB
46 lines
1.6 KiB
import geojson
|
|
import numpy as np
|
|
import pandas as pd
|
|
from django.contrib.gis.geos import GEOSGeometry
|
|
from geojson import MultiPolygon
|
|
|
|
from service import models
|
|
import requests
|
|
from tqdm import tqdm
|
|
|
|
|
|
def load_ao_and_rayons(
|
|
ao_filepath: str,
|
|
rayons_filepath: str,
|
|
):
|
|
models.AO.objects.all().delete()
|
|
models.Rayon.objects.all().delete()
|
|
gj = geojson.load(ao_filepath)
|
|
objs = gj['features']
|
|
for obj in tqdm(objs, desc='Loading AOs...'):
|
|
name = obj['properties']['okrug']
|
|
coords = obj['geometry']['coordinates']
|
|
models.AO.objects.create(**{'name': name, 'polygon': GEOSGeometry(str(MultiPolygon(coords)))})
|
|
gj = geojson.load(rayons_filepath)
|
|
objs = gj['features']
|
|
for obj in tqdm(objs, desc='Loading Rayons...'):
|
|
name = obj['properties']['rayon']
|
|
coords = obj['geometry']['coordinates']
|
|
okr = obj['properties']['okrug']
|
|
ao = models.AO.objects.get(name=okr)
|
|
models.Rayon.objects.create(**{'name': name, 'polygon': GEOSGeometry(str(MultiPolygon(coords))), 'AO': ao})
|
|
|
|
|
|
def load_dist(filepath: str):
|
|
models.PointDist.objects.all().delete()
|
|
df = pd.read_csv(filepath)
|
|
for row in df.to_dict('records'):
|
|
row['id1'] = models.PlacementPoint.objects.get(pk=row.get('id1'))
|
|
row['id2'] = models.PlacementPoint.objects.get(pk=row.get('id2'))
|
|
models.PointDist.objects.create(**row)
|
|
|
|
|
|
def log_to_telegram(msg):
|
|
requests.post('https://api.telegram.org/bot6275517704:AAHVp_qv9d9NU740JJdOM2fJdgS4r1AgJrw/sendMessage',
|
|
json={"chat_id": "-555238820", "text": msg})
|