Страница 1 из 1
Определить предельные координаты полигона
Добавлено: 24 апр 2012, 22:24
Константин Силкин
Привет всем!
Требуется определить минимальное и максимальное значение координат узлов всех полигонов (в слое или выборке) так, чтобы для каждого полигона была известна эта информация индивидуально. В идеале требуется утилита, которая создаёт в таблице 4 поля (Xmin, Ymin, Xmax, Ymax), в которые вписывает соответствующие значения для каждого объекта. Никто не встречал ничего такого из уже готового?
Заранее благодарен!
Re: Определить предельные координаты полигона
Добавлено: 25 апр 2012, 06:25
SergS
зачем чего-то готовое?
если для выборки:
Код: Выделить всё
set coordsys table selection
select ID, Objectgeography(obj, 1) "MinX", Objectgeography(obj, 2) "MinY", Objectgeography(obj, 3) "MaxX", Objectgeography(obj, 4) "MaxY" from selection into Выборка_с_MBR noselect
Browse * from Выборка_с_MBR
Вместо id - реальный набор имен полей
Если не для выборки, то вместо selection - имя таблицы
Если нужно постоянно хранить такие значения (не представляю зачем - если объект изменится - нужно будет обновлять дополнительно), то добавить в таблицу колонки, например: MinX float
и ...
set coordsys table Таблица
Update Таблица set MinX=Objectgeography(obj, 1)
Update Таблица set MinY=Objectgeography(obj, 2)
...
ну и так далее
Re: Определить предельные координаты полигона
Добавлено: 25 апр 2012, 17:41
Константин Силкин
Привет, SergS!
Спасибо за быстрый ответ. Можно только пояснить что значит "реальный набор имен полей"?
Re: Определить предельные координаты полигона
Добавлено: 25 апр 2012, 17:53
dab
Выборка данных под названием Selection содержит поля из таблицы, по которой осуществлялась выборка.
В примере SergS запрос включает поле ID, а поле с таким названием может быть, а может и нет в Вашей таблице.
Поэтому, соответственно, в запросе указывайте поля именно Вашей таблицы, то есть "реальный набор имен полей", а не не только ID как в примере.
Re: Определить предельные координаты полигона
Добавлено: 25 апр 2012, 18:01
Константин Силкин
Спасибо, SergS и Дмитрий!
Всё получилось!
Re: Определить предельные координаты полигона
Добавлено: 25 апр 2012, 18:43
Константин Силкин
Рано обрадовался…
Работать-то оно работает, но что выдаёт? Значения отличаются на несколько десятков километров. На картинке видно, что координаты, определённые с помощью запроса в выделенной строке явно не совпадают со сведениями, которые выдаёт MapInfo, когда показывает свойства выделенного объекта. В какой системе координат они вообще были выданы?

Re: Определить предельные координаты полигона
Добавлено: 25 апр 2012, 21:50
dab
Если это Пермь, логично, что окно "Region Object" выдает в 10 зоне Пулково 1942.
То есть в системе координат(СК) карты. Проверить можно "Меню" / "Карта" / "Режимы" / "Проекция"
SergS писал
Этой строкой устанавливается СК Selection, что соответствует СК таблицы. Проще всего проверить СК таблицы можно "Меню" / "Файл" / "Сохранить копию" / [указываете таблицу] / "Новое имя" / "Проекция"
По логике там тоже должна быть Гауса-Крюгера (Пулково 1942) зона 10
Что у Вас?
Re: Определить предельные координаты полигона
Добавлено: 25 апр 2012, 22:58
Константин Силкин
СК таблицы и окна карты именно эта, т.е. 10 зона Гаусса-Крюгера. Однако результат запроса вывел объекты в 8-ю зону. Это я ещё могу легко скомпенсировать. Но, если не обращать внимание на этот фокус, то остаётся непонятным сдвиг X и Y на несколько десятков километров относительно истинного положения. Пробовал кстати менять СК на "Широта/Долгота" — эффект тот же. Отсюда понял, что результат запроса выдаётся в какой-то особенной СК, не связанной с СК таблицы
Re: Определить предельные координаты полигона
Добавлено: 26 апр 2012, 05:23
SergS
Константин Силкин писал(а):Отсюда понял, что результат запроса выдаётся в какой-то особенной СК, не связанной с СК таблицы
все таки проверьте СК карты. Информация об объекте выдается в СК окна карты. Можно попробовать получить значения МБР в этой системе. Для этого - сделать карту активной, переключиться на окно mapbasic, выполнить команду
set coordsys window frontwindow()
ну а потом все по прежнему
PS: проверил весь алгоритм, все работает, так что проверьте вот это утверждение :
Константин Силкин писал(а):СК таблицы и окна карты именно эта, т.е. 10 зона Гаусса-Крюгера
чтобы исключить накладки (типа, ошибочно сделать set coordsys для выборки, которая к делу отношения не имеет), вместо
выполнить так:
(я так понимаю - именно settlement является у вас жертвой изысканий)
Re: Определить предельные координаты полигона
Добавлено: 26 апр 2012, 22:39
Константин Силкин
СК уточнил. Однозначно 10 зона.
Поменял в запросе secelction на имя таблицы.
Результат ровно прежний. Т.е. неправильный
Re: Определить предельные координаты полигона
Добавлено: 27 апр 2012, 05:39
SergS
даже интересно стало.
можете таблицу сбросить? (или любой ее фрагмент)
PS: менять то стоило не в запросе, а в предложении set coordsys...
Re: Определить предельные координаты полигона
Добавлено: 27 апр 2012, 15:38
Константин Силкин
SergS писал(а): менять то стоило не в запросе, а в предложении set coordsys...
Поменял в обоих местах для надёжности.
Таблицу прилагаю.
Временами, признаюсь, мне кажется, что у меня видения. Полистаю таблицу и вижу десятки в начале иксов. А потом вдруг возвращаются восьмёрки. Пару раз замечал. Во второй даже лицезрел целую минуту эту десятку в первой строке, а щёлкнул мышкой по строке и десятка превратилась в восьмёрку… Похоже, что MapInfo надо мной издевается.
P.S. При экспорте таблицы в csv-файл у иксов впереди восьмёрки
Re: Определить предельные координаты полигона
Добавлено: 28 апр 2012, 05:14
SergS
Каюсь, не смог воспроизвести описанную вами ситуацию. прогнал весь алгоритм на вашей таблице - результат вот:

- Безимени-1.jpg (193.23 КБ) 10032 просмотра
Re: Определить предельные координаты полигона
Добавлено: 01 май 2012, 14:18
Константин Силкин
Спасибо за участие, SergS!
Я уже понял, что это MapInfo шутки шутит так. Если серьёзно, то вероятно как-то влияют другие неучтённые настройки. А может версия MapInfo имеет значение. У вас я вижу, более ранняя, чем у меня (11). Но, раз уж вы всё равно получили этот результат, не могли бы вы прислать его в любом виде (кроме таблицы MapInfo).
Заранее благодарен, с праздником вас!
Re: Определить предельные координаты полигона
Добавлено: 05 май 2012, 08:22
Константин Силкин
Спасибо всем, кто мне помогал! Задачу решил путём построчного перебора таблицы и вывода результатов в текстовый файл