повторять ли первую точку полигонов в MIF?

MapInfo, MapBasic
АлексЮстасу
Гуру
Сообщения: 619
Зарегистрирован: 09 авг 2009, 13:09
Репутация: 67
Ваше звание: топограф, технолог
Откуда: Мааськва

повторять ли первую точку полигонов в MIF?

Сообщение АлексЮстасу » 10 апр 2017, 03:10

Как "штатно" описывать координаты полигонов (REGION) в MIF?
1. повторяя в конце первую точку,
2. не повторяя в конце первую точку,
3. не определено.
Если можно, то со ссылкой на оф. документ. :)

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

Re: повторять ли первую точку полигонов в MIF?

Сообщение Игорь Белов » 10 апр 2017, 10:36

АлексЮстасу писал(а):Если можно, то со ссылкой на оф. документ.
К чему такая официальность? Хорошая практика — экспортировать MIF'ы из MapInfo (в крайнем случае из QGIS) в качестве образца.
«Усы, лапы и хвост — вот мои документы!» ©
The purpose of computing is insight, not numbers

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: повторять ли первую точку полигонов в MIF?

Сообщение Boris » 10 апр 2017, 16:01

АлексЮстасу писал(а):Как "штатно" описывать координаты полигонов (REGION) в MIF?
1. повторяя в конце первую точку,
2. не повторяя в конце первую точку,
3. не определено.
Если можно, то со ссылкой на оф. документ. :)
Документов не много - единственный полный, что я видел был описание обменного формата отдельным документом. Но к настоящему моменту в сети остались только "Приложение J: ..." к руководству пользователя Mapinfo, и судя по тексту, его уже лет 20 не обновляли. Полный документ ;( потерян за эти годы, а сайт Mapinfo PB так "улучшило", что всё что пять лет и старше просто смыло.
Вот в Appendix J: MapInfo Data Interchange Format этот момент не акцентирован. В том, что я когда-то видел, по моему, было указание на необходимость замыкать контур полигона(вариант 1). И, опять же по воспоминаниям, в каком то еще текстовом формате сказано то же самое.
Что касается MapInfo, то сам пакет при импорте не замкнутого контура, точку достраивает, число точек - увеличивает.
При экспорте как можно видеть делает это всегда. Был опыт импорта чьего экспорта без точки, особенность импорта мапинфо обнаружилась потому, что в начале импорт массово делали каким то еще пакетом (уже не помню кем, было до обретения знаний о мапинфо как сервер автоматизации) и этот пакет наделал "битых" контуров в TAB-ах.
Поскольку MIF - это все же результат экспорта из TAB, то из логики построения файла MAP, вариант 1 - реализован в самом TAB/MAP. Это я знаю точно, т.к. в формате на досуге ковырялся ;)

АлексЮстасу
Гуру
Сообщения: 619
Зарегистрирован: 09 авг 2009, 13:09
Репутация: 67
Ваше звание: топограф, технолог
Откуда: Мааськва

Re: повторять ли первую точку полигонов в MIF?

Сообщение АлексЮстасу » 10 апр 2017, 17:18

"...давно это было."
"...старожилы не припомнят. :D

Да, мысль экспортировать в MIF самой Мапинфой была, но уже после создания темы, да и Мапинфы не было под рукой.
А само оно успешно импортирует из MIF и вариант 1, и 2, т.е. работает вариант 3. :)

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: повторять ли первую точку полигонов в MIF?

Сообщение Boris » 10 апр 2017, 18:00

АлексЮстасу писал(а): т.е. работает вариант 3. :)
Именно так. В существующей документации, вот именно существующей сейчас, потому как исходная утрачена :cry: (и не только мною), вариант опущен.
Формат MAP/TAB в своем неофициальном описании содержит указание на повторение крайней точки контура и в при исследовании этого бинарного файла во всех встреченных композиция точки повторяются. Удаление крайней точки разрушает целостность геометрии.

АлексЮстасу
Гуру
Сообщения: 619
Зарегистрирован: 09 авг 2009, 13:09
Репутация: 67
Ваше звание: топограф, технолог
Откуда: Мааськва

Re: повторять ли первую точку полигонов в MIF?

Сообщение АлексЮстасу » 11 апр 2017, 02:49

Boris писал(а):Формат MAP/TAB в своем неофициальном описании содержит указание на повторение крайней точки контура и в при исследовании этого бинарного файла во всех встреченных композиция точки повторяются. Удаление крайней точки разрушает целостность геометрии.
Ок. Принимаю к сведению. Тем более, что MI выгружает (я попробовал) полигоны в MIF действительно с повторением первой точки в конце.
Спойлер
Два общих соображения:
1. Зачем первую точку повторять, если это описание заведомо замкнутой границы площадного объекта - REGION? Повторение первой точки - это же тоже признак замкнутости. Но если фигура (REGION) по определению замкнута, то зачем нужно еще одним, вторым, способом определять замкнутость?
2. Зачем в MIF перед списком пар координат полигона нужно давать число точек полигона?
2.1. Во-первых, по техническим причинам может возникнуть рассогласование между реальным числом пар координат и прямо прописанным числом.
2.2. Зачем вообще нужно указывать число точек - сколько пар координат ни есть, все же нужны?
2.3. Если первую точку повторять в конце, то треугольная, например, фигура будет состоять из четырех точек. Квадрат - из пяти и т.д. Что достаточно смешно, и создает некую неопределенность для здравого смысла.
Ок. Число точек полигонов служит разделителем для сложных - составных, с отверстиями - полигонов. Но можно же как-то иначе разделять, наверное, без загадок?

trir
Гуру
Сообщения: 5278
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1014
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: повторять ли первую точку полигонов в MIF?

Сообщение trir » 11 апр 2017, 09:37

Количество точек важно в бинарном представлении, а в mif это просто калька из tab
повторение точек как признак замкнутости - удобно для линий (даёт гомогенность записи, иначе пришлось бы вводить дополнительное свойство), а в полигонах удобно - что бы не усложнять логику программы.
И в общем даёт дополнительные данные для проверки корректности геометрии

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: повторять ли первую точку полигонов в MIF?

Сообщение Boris » 12 апр 2017, 08:51

MIF/TAB - это наследие того времени, когда создатели форматов ценили время свое и чужое. Этот формат создан для того, что бы универсально обмениваться гео-данными. Если абстрагироваться от отсутствия 3-й координаты, то эту свою задачу он может исполнять еще достаточно долго - текстовый файл существует в любой современной операционной системе общего пользования, значит восстановление геометрии - дело не очень сложного программирования.
В последовательном формате, коим является MIF/TAB и прочие, предназначенные для работы с данными, особенно, если программа написана на Си, знание о размере буфера для помещения объекта в оперативную память, является необходимым.
Именно это позволяет хранить и обрабатывать огромные массивы геоданных.
В текущих новомодных "форматах" эта очевидная мысль, в погоне за универсальностью, стала исчезать, и везде, где может, идея о том, что "любой файл можно до последней скобки загрузить в память программы" очень больно "лягает" пользователей как только размер данных превышает физические возможности компьютера - создать файл на 1 миллион записей XML или JSON не сложно, а вот прочитать его - это уже как повезет с правильными руками писателей софта, предназначенного для восстановления данных.
В формате неявно перечисляются ребра, а ребер требуется указание всех вершин их составляющих.
И это соответствует принятой геодезической практике - ГИС растут из геодезии и картографии.
geoCSV в версии GDAL создается точно таким образом - даже на MIF из 3-х точек он создает замкнутый WKT:
MIF:

Код: Выделить всё

Region 1
  3
2326607.29 428609.01
2326619.04 428600.12
2326596.31 428599.7
CSV:

Код: Выделить всё

"POLYGON ((2326607.29 428609.01,2326619.04 428600.12,2326596.31 428599.7,2326607.29 428609.01))"
PS
Для приобщения к "зачем" и "почему", если это действительно интересно, стоит посмотреть описание сущности "полигон" в стандарте консорциума OpenGis (не в курсе как он сейчас называется). Mapinfo была (есть?) активным участником этого консорциума, видимо какое то виденье того что есть полигон, компания обосновала в этом стандарте. На сколько я успел увидеть (по диагонали "Simple Feature Access - Part 1: Common Architecture"): "полигон - состоит из контуров (Ring) внешнего и внутренних, а Ring есть простой замкнутый Curve ("A Curve that is simple and closed is a Ring.") и далее к описанию точки. В этой логике - все логично, простите за тавтологию, нельзя описать полигон не указав конечную точку в каждом контуре.

АлексЮстасу
Гуру
Сообщения: 619
Зарегистрирован: 09 авг 2009, 13:09
Репутация: 67
Ваше звание: топограф, технолог
Откуда: Мааськва

Re: повторять ли первую точку полигонов в MIF?

Сообщение АлексЮстасу » 17 апр 2017, 20:25

Boris писал(а):В формате неявно перечисляются ребра, а ребер требуется указание всех вершин их составляющих.
И это соответствует принятой геодезической практике - ГИС растут из геодезии и картографии.
geoCSV в версии GDAL создается точно таким образом - даже на MIF из 3-х точек он создает замкнутый WKT:
Если мыслить ребрами, т.е. отрезками, то число точек ограниченной фигуры нужно удваивать, а не одну добавлять.
Кстати, чем именно картография и геодезия провоцируют? Для картографов-геодезистов треугольники всегда из трех вершин, пятиугольники всегда из пяти и т.д.
Boris писал(а):Для приобщения к "зачем" и "почему", если это действительно интересно...
...нельзя описать полигон не указав конечную точку в каждом контуре.
Вполне же можно. У объекта всегда нужно указывать его тип [локализации] - линейный или площадной и т.п. В самой сущности площадного уже заложено, что ограничивающий полигон, составляющие полигоны замкнуты.
А вот если элемент линейный, то да, другое дело - вот для линейных, чьи начала и концы совпадают, для них нужно первую точку повторить. Но это же другой тип [локализации] объектов.

trir
Гуру
Сообщения: 5278
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1014
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: повторять ли первую точку полигонов в MIF?

Сообщение trir » 17 апр 2017, 20:37

тогда проблема будет при переходе от полигона к линии и обратно - удалять/добавлять точку, только лишняя морока

geouser
Активный участник
Сообщения: 146
Зарегистрирован: 02 июн 2015, 10:32
Репутация: 53
Откуда: Москва

Re: повторять ли первую точку полигонов в MIF?

Сообщение geouser » 18 апр 2017, 09:22

Действительно, MIF довольно удобный текстовый формат для описания геоданных. Это сейчас его потеснили новомодные разработки. А тогда старее него был только текстовый формат BNA (Atlas Draw / Atlas Graphics), где и атрибуты и геометрия были в одном файле а не в двух.

В своё время я написал примитивный вьюер MIF/MID на чистом Visual Basic, не используя никаких библиотек. Чтобы самому понять, как рисуют геометрию объектов ГИС программы. Плюс достоинства MIF/MID в том, что можно смотреть и менять координатную систему, координаты, атрибуты в любом текстовом редакторе.

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

Re: повторять ли первую точку полигонов в MIF?

Сообщение Boris » 18 апр 2017, 12:34

АлексЮстасу писал(а): Если мыслить ребрами, т.е. отрезками, то число точек ограниченной фигуры нужно удваивать, а не одну добавлять.
Кстати, чем именно картография и геодезия провоцируют? Для картографов-геодезистов треугольники всегда из трех вершин, пятиугольники всегда из пяти и т.д.
Число точек должно удваиваться, но число ребер должно быть равно числу точек без замыкающей. И в последовательном ОБМЕННОМ формате очевидно, что удваивать точки совершенно не зачем - куда точка конца одно ребра денется от того, что бы быть точкой начала следующего.
Теперь о геодезистах, может мне попадались не правильные, но в замкнутом ходе, они всегда отображали точку к которой вернулись. И 90% результатов измерений. что я видел, которые публиковались и нам передавались содержали конечную точку, хотя должен отметить со своей "дыркой в голове" - если контуров у объекта было много, только 20% из передавались как отдельные контура, все остальные последнюю точку одного контура спокойно продолжали в 1-ю точку следующего.
Вполне же можно. У объекта всегда нужно указывать его тип [локализации] - линейный или площадной и т.п. В самой сущности площадного уже заложено, что ограничивающий полигон, составляющие полигоны замкнуты.
А вот если элемент линейный, то да, другое дело - вот для линейных, чьи начала и концы совпадают, для них нужно первую точку повторить. Но это же другой тип [локализации] объектов.
Во-первых, я же сослался на стандарт, с ним, а с ним тяжело спорить. Он такой как есть. Я только описал логику как я ее понял. Тип региона в MIF указывается и так, Mapinfo контур замыкает не зависимо от того есть повтор или нет. Мне кажется разумным точку повторять, а не хранить лишнее знание. Ну, это во мне говорить высшее математическое с уклоном в системотехнику и информатик образование. Зачем в памяти компьютера плодить лишние знания, которые избыточны.
PS
Теперь о ребрах, вот есть у меня XML - продукт "информационного обмена органов власти" по части Росреестра. Он специально создан для тех, кто считает, что ребра не должны быть непрерывной последовательностью точек. В XML, есть два блока - точки (контура) и потом ребра как ссылка на эти точки.
Я ХЗ кто и как заполняет оба этих блока и в каком состоянии это делается. Но вот, что у меня есть 12 ребер, и 13 точек, каждая точка имеет имя собственное - трехзначное, например, "102". Вот начиная с шестой точки, по моему точки "108", каждое следующее ребро в списке начинается в точке "108", а оканчивается. в каждый раз разной точке.

Код: Выделить всё

"108"-"110"
"108"-"112"
"108"-"306"
и т.д.
Это к вопросу надо ли усложнять сущности, если на противоположном конце сидят исполнители, кои инструкций не читают и действуют методом интуитивного осознания работы?

АлексЮстасу
Гуру
Сообщения: 619
Зарегистрирован: 09 авг 2009, 13:09
Репутация: 67
Ваше звание: топограф, технолог
Откуда: Мааськва

Re: повторять ли первую точку полигонов в MIF?

Сообщение АлексЮстасу » 18 апр 2017, 20:29

trir писал(а):тогда проблема будет при переходе от полигона к линии и обратно - удалять/добавлять точку, только лишняя морока
Может быть не лишняя, а естественная - сущности ведь разные?
Boris писал(а):Теперь о геодезистах, может мне попадались не правильные, но в замкнутом ходе, они всегда отображали точку к которой вернулись...
Геодезический ход любого типа - не площадной, а линейный объект. Замкнутая линия требует повторения первой точки в конце.
Boris писал(а):Во-первых, я же сослался на стандарт, с ним, а с ним тяжело спорить...
...Mapinfo контур замыкает не зависимо от того есть повтор или нет.
Так мы же здесь не об авторитетах, а о принципиальной целесообразности. Вот, и в Mapinfo следы борьбы "конечников" с "бесконечниками" :)
Boris писал(а):Теперь о ребрах, вот есть у меня XML - продукт "информационного обмена органов власти" по части Росреестра. Он специально создан для тех, кто считает, что ребра не должны быть непрерывной последовательностью точек. В XML, есть два блока - точки (контура) и потом ребра как ссылка на эти точки.
Я ХЗ кто и как заполняет оба этих блока и в каком состоянии это делается. Но вот, что у меня есть 12 ребер, и 13 точек, каждая точка имеет имя собственное - трехзначное, например, "102". Вот начиная с шестой точки, по моему точки "108", каждое следующее ребро в списке начинается в точке "108", а оканчивается. в каждый раз разной точке.
...
Это к вопросу надо ли усложнять сущности, если на противоположном конце сидят исполнители, кои инструкций не читают и действуют методом интуитивного осознания работы?
Точка 108, вероятно, общий угол сразу нескольких участков.
Изначальный смысл этого продукта Росреестра был не столько в наведении порядка и в создании базы нужных сведений, сколько в получении денег с населения. Именно поэтому кадастр создавался не методом инвентаризаций, а по заявительному принципу. С соответствующими результатами для порядка и сведений. И для логичности внутреннего устройства. "Межевые точки" (углы поворотов границ) задумывались, как один из продаваемых ими товаров.
Т.е. в этих XML люди реализовали полную цепочно-узловую структуру?

АлексЮстасу
Гуру
Сообщения: 619
Зарегистрирован: 09 авг 2009, 13:09
Репутация: 67
Ваше звание: топограф, технолог
Откуда: Мааськва

Re: повторять ли первую точку полигонов в MIF?

Сообщение АлексЮстасу » 19 апр 2017, 21:15

Например, к вопросу о "конечниках" и "бесконечниках" : https://forums.autodesk.com/t5/autocad- ... 9049#M2478

И - будете смеяться - прямо сегодня сотрудница (из другого отдела, и форумы не читающая) озадачила найти решение для избавления от повторения первой вершины. Типа, нужно выгружать в таблицы, в которых это повторение мешает заказчикам.

trir
Гуру
Сообщения: 5278
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1014
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: повторять ли первую точку полигонов в MIF?

Сообщение trir » 21 апр 2017, 07:19

подправь механизм выгрузки

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей