Александр! Благодарю Вас !
Я еще не отвык от MapBasic.
Плагины
Re: Плагины
Александр ! Доброго времени суток!
Как осуществить поиск объектов в заданной точке Карты ?
( по аналогии с MapBasic - функция SearchPoint(map_window_id,x,y) поиск осуществляет по всем доступным слоям ока Карты )
где: map_window_id - идентификатор окна Карты;
x - координата по оси X
y- координата по оси Y
возвращает количество найденных объектов
Как осуществить поиск объектов в заданной точке Карты ?
( по аналогии с MapBasic - функция SearchPoint(map_window_id,x,y) поиск осуществляет по всем доступным слоям ока Карты )
где: map_window_id - идентификатор окна Карты;
x - координата по оси X
y- координата по оси Y
возвращает количество найденных объектов
Re: Плагины
Добавка: аналог функции SearchInfo(sequence_number,attribute)
где : sequence_number - кол-во найденных объектов
attribute : Search_info_table - имя таблицы содержащий этот объект
Search_info_row - номер записи
P.S. назначение функций MapBаsic я привел , чтобы не запутать Вас своими вопросами.
где : sequence_number - кол-во найденных объектов
attribute : Search_info_table - имя таблицы содержащий этот объект
Search_info_row - номер записи
P.S. назначение функций MapBаsic я привел , чтобы не запутать Вас своими вопросами.
Re: Плагины
Александр ! Доброго времени суток!
Я правильно понял , что осуществить поиск объектов в заданной точке Карты по всем слоям
в Python API такой возможности нет ?
Я правильно понял , что осуществить поиск объектов в заданной точке Карты по всем слоям
в Python API такой возможности нет ?
Re: Плагины
Стандартной функции нет, но её можно реализовать
вывод для карты мира с сайта:
Code: Select all
import typing
import axipy as axp
class SearchInfo(typing.NamedTuple):
table: axp.Table
features: typing.Iterator[axp.Feature]
def search_point(map_view: axp.MapView, x: float, y: float, dp: int = 1) -> typing.Iterator[SearchInfo]:
"""
:param map_view: Окно карты
:param x: X-координата
:param y: Y-координата
:param dp: точность в пикселях
:return: Список, состоящий из таблицы и принадлежащих ей записей
"""
# найдём прямоугольник на карте плюс-минус точность в пикселях от исходной точки
xp, yp = map_view.scene_to_device_transform.map(x, y)
x1, y1 = map_view.device_to_scene_transform.map(xp - dp, yp - dp)
x2, y2 = map_view.device_to_scene_transform.map(xp + dp, yp + dp)
r = axp.Rectangle(x1, y1, x2, y2, cs=map_view.coordsystem)
# На всех векторных слоях найдём объекты, пересекающиеся с этим прямоугольником
return (SearchInfo(lr.data_object, lr.data_object.itemsInObject(r))
for lr in map_view.map.layers if isinstance(lr, axp.VectorLayer) and isinstance(lr.data_object, axp.Table))
# Пример использования
# Найдём на активной карте все оъекты в точке 37.627773, 55.75062
# Для каждого результата выведем название таблицы и значение из первой колонки
for sp in search_point(axp.view_manager.active, 37.627773, 55.75062):
for f in sp.features:
print(sp.table.name, ": ", f[0])
Код: Выделить всё
Столицы : Москва
Страны : Россия
Океан : 0
Re: Плагины
Александр ! доброго времени суток !
Благодарю Вас, буду разбираться.
P.S. По моему разумению такие функции должны быть.
Благодарю Вас, буду разбираться.
P.S. По моему разумению такие функции должны быть.