Пространственные запросы

Вопросы связанные с работой ГИС Аксиома
Ответить
Аватара пользователя
Афанасич
Сообщения: 13
Зарегистрирован: 06 янв 2023, 12:00

Пространственные запросы

Сообщение Афанасич » 06 янв 2023, 12:05

Как составить SQL запрос вида 'SELECT * FROM table WHERE table.obj Contains pointObject" где pointObject - переменная
Аватара пользователя
gisamap
Сообщения: 195
Зарегистрирован: 18 окт 2019, 08:03

Re: Пространственные запросы

Сообщение gisamap » 07 янв 2023, 07:01

Добрый день.
Насколько я знаю , пока таких возможностей нет.
Один из вариантов записать pointObject в какую то временную таблицу , тогда можно будет выполнить запрос аналогичный запрос
Аватара пользователя
Александр
Сообщения: 405
Зарегистрирован: 18 апр 2019, 08:21

Re: Пространственные запросы

Сообщение Александр » 07 янв 2023, 13:21

В SQL-запросе можно создавать геометрию "на лету" из строки
Например с помощью FromMIF или GeomFromText

Ниже пример на Python с запросом использующим FromMIF:

Code: Select all

import axipy
from PySide2.QtWidgets import QFileDialog

fn = QFileDialog.getOpenFileName(axipy.view_manager.global_parent, 'Открыть таблицу', None, 'MapInfo tab (*.tab)')
x = 68.42
y = 57.64
if fn[0]:
with axipy.provider_manager.openfile(fn[0]) as tbl:
if isinstance(tbl, axipy.da.Table):
with axipy.data_manager.query_hidden(
f"Select * From {tbl.name} Where obj Contains FromMIF('Point {x} {y}')") as qry:
for itm in qry.items():
print('----------')
for val in itm.values():
if not isinstance(val, (axipy.da.Geometry, axipy.da.Style)):
print(val)
Аватара пользователя
Афанасич
Сообщения: 13
Зарегистрирован: 06 янв 2023, 12:00

Re: Пространственные запросы

Сообщение Афанасич » 08 янв 2023, 08:23

Спасибо, сработала привычка писать на mapbasic, хотя sql запросы мне известны. Попробую проверить оба варианта на скорость.
Аватара пользователя
gisamap
Сообщения: 195
Зарегистрирован: 18 окт 2019, 08:03

Re: Пространственные запросы

Сообщение gisamap » 08 янв 2023, 15:40

Добрый день.
У обоих вариантов есть свои плюсы и минусы :
- в 1 варианте создание дополнительной таблицы ( хотя это может быть и ссылка на запрос )
- 2 варианта , это текстовое представление объектов , что приводит к проблеме форматирования ( число знаков после запятой ) и возможно большая длина строки запроса ( простой пример полигон границы какого либо субъекта РФ)
Аватара пользователя
gisamap
Сообщения: 195
Зарегистрирован: 18 окт 2019, 08:03

Re: Пространственные запросы

Сообщение gisamap » 08 янв 2023, 15:42

Добрый день.
У обоих вариантов есть свои плюсы и минусы :
- в 1 варианте создание дополнительной таблицы ( хотя это может быть и ссылка на запрос )
- 2 варианта , это текстовое представление объектов , что приводит к проблеме форматирования ( число знаков после запятой ) и возможно большая длина строки запроса ( простой пример полигон границы какого либо субъекта РФ)

Если говорить о MapBasice , то начиная с 17 версии можно было писать функцию на MapBasic и регистрировать как функцию SQL , что было очень удобно
Ответить