Определить предельные координаты полигона
-
- Завсегдатай
- Сообщения: 447
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Определить предельные координаты полигона
Привет всем!
Требуется определить минимальное и максимальное значение координат узлов всех полигонов (в слое или выборке) так, чтобы для каждого полигона была известна эта информация индивидуально. В идеале требуется утилита, которая создаёт в таблице 4 поля (Xmin, Ymin, Xmax, Ymax), в которые вписывает соответствующие значения для каждого объекта. Никто не встречал ничего такого из уже готового?
Заранее благодарен!
Требуется определить минимальное и максимальное значение координат узлов всех полигонов (в слое или выборке) так, чтобы для каждого полигона была известна эта информация индивидуально. В идеале требуется утилита, которая создаёт в таблице 4 поля (Xmin, Ymin, Xmax, Ymax), в которые вписывает соответствующие значения для каждого объекта. Никто не встречал ничего такого из уже готового?
Заранее благодарен!
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Определить предельные координаты полигона
зачем чего-то готовое?
если для выборки:
Вместо id - реальный набор имен полей
Если не для выборки, то вместо selection - имя таблицы
Если нужно постоянно хранить такие значения (не представляю зачем - если объект изменится - нужно будет обновлять дополнительно), то добавить в таблицу колонки, например: MinX float
и ...
set coordsys table Таблица
Update Таблица set MinX=Objectgeography(obj, 1)
Update Таблица set MinY=Objectgeography(obj, 2)
...
ну и так далее
если для выборки:
Код: Выделить всё
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
Если не для выборки, то вместо selection - имя таблицы
Если нужно постоянно хранить такие значения (не представляю зачем - если объект изменится - нужно будет обновлять дополнительно), то добавить в таблицу колонки, например: MinX float
и ...
set coordsys table Таблица
Update Таблица set MinX=Objectgeography(obj, 1)
Update Таблица set MinY=Objectgeography(obj, 2)
...
ну и так далее
-
- Завсегдатай
- Сообщения: 447
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Re: Определить предельные координаты полигона
Привет, SergS!
Спасибо за быстрый ответ. Можно только пояснить что значит "реальный набор имен полей"?
Спасибо за быстрый ответ. Можно только пояснить что значит "реальный набор имен полей"?
- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Определить предельные координаты полигона
Выборка данных под названием Selection содержит поля из таблицы, по которой осуществлялась выборка.
В примере SergS запрос включает поле ID, а поле с таким названием может быть, а может и нет в Вашей таблице.
Поэтому, соответственно, в запросе указывайте поля именно Вашей таблицы, то есть "реальный набор имен полей", а не не только ID как в примере.
В примере SergS запрос включает поле ID, а поле с таким названием может быть, а может и нет в Вашей таблице.
Поэтому, соответственно, в запросе указывайте поля именно Вашей таблицы, то есть "реальный набор имен полей", а не не только ID как в примере.
-
- Завсегдатай
- Сообщения: 447
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Re: Определить предельные координаты полигона
Спасибо, SergS и Дмитрий!
Всё получилось!
Всё получилось!
-
- Завсегдатай
- Сообщения: 447
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Re: Определить предельные координаты полигона
Рано обрадовался…
Работать-то оно работает, но что выдаёт? Значения отличаются на несколько десятков километров. На картинке видно, что координаты, определённые с помощью запроса в выделенной строке явно не совпадают со сведениями, которые выдаёт MapInfo, когда показывает свойства выделенного объекта. В какой системе координат они вообще были выданы?

Работать-то оно работает, но что выдаёт? Значения отличаются на несколько десятков километров. На картинке видно, что координаты, определённые с помощью запроса в выделенной строке явно не совпадают со сведениями, которые выдаёт MapInfo, когда показывает свойства выделенного объекта. В какой системе координат они вообще были выданы?

- dab
- Гуру
- Сообщения: 671
- Зарегистрирован: 16 дек 2011, 20:02
- Репутация: 170
- Ваше звание: Гуру
- Откуда: Москва
- Контактная информация:
Re: Определить предельные координаты полигона
Если это Пермь, логично, что окно "Region Object" выдает в 10 зоне Пулково 1942.
То есть в системе координат(СК) карты. Проверить можно "Меню" / "Карта" / "Режимы" / "Проекция"
SergS писал
Этой строкой устанавливается СК Selection, что соответствует СК таблицы. Проще всего проверить СК таблицы можно "Меню" / "Файл" / "Сохранить копию" / [указываете таблицу] / "Новое имя" / "Проекция"
По логике там тоже должна быть Гауса-Крюгера (Пулково 1942) зона 10
Что у Вас?
То есть в системе координат(СК) карты. Проверить можно "Меню" / "Карта" / "Режимы" / "Проекция"
SergS писал
Код: Выделить всё
set coordsys table selection
По логике там тоже должна быть Гауса-Крюгера (Пулково 1942) зона 10
Что у Вас?
-
- Завсегдатай
- Сообщения: 447
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Re: Определить предельные координаты полигона
СК таблицы и окна карты именно эта, т.е. 10 зона Гаусса-Крюгера. Однако результат запроса вывел объекты в 8-ю зону. Это я ещё могу легко скомпенсировать. Но, если не обращать внимание на этот фокус, то остаётся непонятным сдвиг X и Y на несколько десятков километров относительно истинного положения. Пробовал кстати менять СК на "Широта/Долгота" — эффект тот же. Отсюда понял, что результат запроса выдаётся в какой-то особенной СК, не связанной с СК таблицы
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Определить предельные координаты полигона
все таки проверьте СК карты. Информация об объекте выдается в СК окна карты. Можно попробовать получить значения МБР в этой системе. Для этого - сделать карту активной, переключиться на окно mapbasic, выполнить командуКонстантин Силкин писал(а):Отсюда понял, что результат запроса выдаётся в какой-то особенной СК, не связанной с СК таблицы
set coordsys window frontwindow()
ну а потом все по прежнему
PS: проверил весь алгоритм, все работает, так что проверьте вот это утверждение :
чтобы исключить накладки (типа, ошибочно сделать set coordsys для выборки, которая к делу отношения не имеет), вместоКонстантин Силкин писал(а):СК таблицы и окна карты именно эта, т.е. 10 зона Гаусса-Крюгера
Код: Выделить всё
set coordsys table selection
Код: Выделить всё
set coordsys table settlement
-
- Завсегдатай
- Сообщения: 447
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Re: Определить предельные координаты полигона
СК уточнил. Однозначно 10 зона.
Поменял в запросе secelction на имя таблицы.
Результат ровно прежний. Т.е. неправильный
Поменял в запросе secelction на имя таблицы.
Результат ровно прежний. Т.е. неправильный
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Определить предельные координаты полигона
даже интересно стало.
можете таблицу сбросить? (или любой ее фрагмент)
PS: менять то стоило не в запросе, а в предложении set coordsys...
можете таблицу сбросить? (или любой ее фрагмент)
PS: менять то стоило не в запросе, а в предложении set coordsys...
-
- Завсегдатай
- Сообщения: 447
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Re: Определить предельные координаты полигона
Поменял в обоих местах для надёжности.SergS писал(а): менять то стоило не в запросе, а в предложении set coordsys...
Таблицу прилагаю.
Временами, признаюсь, мне кажется, что у меня видения. Полистаю таблицу и вижу десятки в начале иксов. А потом вдруг возвращаются восьмёрки. Пару раз замечал. Во второй даже лицезрел целую минуту эту десятку в первой строке, а щёлкнул мышкой по строке и десятка превратилась в восьмёрку… Похоже, что MapInfo надо мной издевается.
P.S. При экспорте таблицы в csv-файл у иксов впереди восьмёрки
- Вложения
-
settlement-polygon_GK10.rar
- Архив с таблицей MapInfo
- (1.12 МБ) 260 скачиваний
-
- Активный участник
- Сообщения: 120
- Зарегистрирован: 14 апр 2011, 13:24
- Репутация: 5
- Откуда: Екатеринбург
Re: Определить предельные координаты полигона
Каюсь, не смог воспроизвести описанную вами ситуацию. прогнал весь алгоритм на вашей таблице - результат вот:
-
- Завсегдатай
- Сообщения: 447
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Re: Определить предельные координаты полигона
Спасибо за участие, SergS!
Я уже понял, что это MapInfo шутки шутит так. Если серьёзно, то вероятно как-то влияют другие неучтённые настройки. А может версия MapInfo имеет значение. У вас я вижу, более ранняя, чем у меня (11). Но, раз уж вы всё равно получили этот результат, не могли бы вы прислать его в любом виде (кроме таблицы MapInfo).
Заранее благодарен, с праздником вас!
Я уже понял, что это MapInfo шутки шутит так. Если серьёзно, то вероятно как-то влияют другие неучтённые настройки. А может версия MapInfo имеет значение. У вас я вижу, более ранняя, чем у меня (11). Но, раз уж вы всё равно получили этот результат, не могли бы вы прислать его в любом виде (кроме таблицы MapInfo).
Заранее благодарен, с праздником вас!
-
- Завсегдатай
- Сообщения: 447
- Зарегистрирован: 21 мар 2012, 07:37
- Репутация: 67
- Откуда: Воронеж
Re: Определить предельные координаты полигона
Спасибо всем, кто мне помогал! Задачу решил путём построчного перебора таблицы и вывода результатов в текстовый файл
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость