@iiggoorr73

Как из принятых геолокаций передать данные в БД с геометрией?

Данные поступают через бот на Pyton 3, после преобразования становятся перпендикулярными координатами , как в автокаде вида x=4701272.2310957555 , y=6654542.8329045465, как мне эти числа отдать в БД MYSQL как точку, вместе с геометрией, если две точке как отрезок, если три и более как мультилинию и какую библиотеку python 3 использовать?
Писать в БД бот должен так 1 точка POINT, 2-точки LINESTRING, 3 и более MULTILINESTRING. Или все преобразования делать через строки?
вот какой-то пример нашел, но не понятно решение.
from osgeo import ogr
 
wkt = "POINT (1198054.34 648493.09)"
pt = ogr.CreateGeometryFromWkt(wkt)
bufferDistance = 500
poly = pt.Buffer(bufferDistance)
print "%s buffered by %d is %s" % (pt.ExportToWkt(), bufferDistance, poly.ExportToWkt())
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 4
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
какую библиотеку python 3 использовать?

В каком плане "какую"?
Писать в БД бот должен так 1 точка POINT, 2-точки LINESTRING, 3 и более MULTILINESTRING


Я бы сделал таблицу вида:
| [ идентификатор] | POINT_TYPE |
Где [ идентификатор] - PK. POINT_TYPE соответствующий тип, значение которого высчитывается python на основе количества точек
И таблицу:
| ID | [Внешний идентификатор] | X | Y |
Где [Внешний идентификатор] общий для каждого набора точек FK из предыдущей таблицы а X/Y, собственно - точки.
Ответ написан
Комментировать
@iiggoorr73 Автор вопроса
В качестве входной информации два числа прямоугольной проекции и их необходимо поместить записью в поле имеющее свойство геометрия. библиотеку ORG v0.37.0 установил, но примеры, по ссылке выше так и не получилось попробовать, что-то не так. Python 3 установлен

import ogr
from osgeo import ogr
    point = ogr.Geometry(ogr.wkbPoint)
    point.AddPoint(1198054.34, 648493.09)
    print = point.ExportToWkt()


ошибка
line 3
point = ogr.Geometry(ogr.wkbPoint)
IndentationError: unexpected indent

Process finished with exit code 1
Базу данных использую SQL, так как дешевле хостинг, VPS сервер дорого.
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Лучше всего для данной задачи подходят базы данных, основанные на алгоритмах класса r-tree/r-tree+. Например postgis для постгреса или elasticsearch.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы