Ребят может знает кто как массово можно притянуть все узлы одного слоя к узлам другого слоя в заданном радиусе (0.1м, 0.09м и т.д.). Было выполнено зонирование территории и границы зон не сходятся с границами участков на КПТ. Каждый узел зоны отлетает от узла участка на КПТ на 1-7см.
Поискать утилиты, можно здесь: http://glab2007.narod.ru/d/mu.html Можно написать свою, если не найдешь. Mapbasic знать не обязательно: это можно написать в любом языке программирования, а обрабатывать файлы Mif - это обычный текстовый формат.
Ну а чё там писать. Экспортируешь обе таблицы в Mif. Загружаешь исходную - к которой ты будешь приводить вторую. Помещаешь в массив. Грузишь вторую, то же в массив. Задаешь в каких пределах: типа как на прореживание лишних точек. Затем в циклах сравниваешь fs= SQR(dX^2+dY^2). Сравнивать нужно не все строки, а только координаты точек. Они как правило располагаются после ключевых слов: Pline, Line, Region и Point. Если у тебя все объекты площадные, то проверяешь только секции Region. Если расхождение в заданных пределах, меняешь на координаты из исходной таблицы. Все остальное без изменений. Я когда-то писал нечто подобное, но там насколько я помню, это относилось не к разным таблицам, а чтобы привести в соответствие табличные координаты из Mid к их положению из Mif, т.е. к графике. Но это было давно, я уже точно и не помню, что у меня там есть. Если есть желание посмотри, вот ссылка на программу: https://www.dropbox.com/s/62w1nahb1srb5mu/Mif_Kat_v2.41.rar?dl=0 См. хелп, раздел Операции с Mif/Mid
Спасибо, пойду изучать. т.к. совмещать узлы в ручную - не вариант, больше 500000 узлов примерно. Логически выглядит просто (у меня одни площадные объекты), но реализовать не хватает ума.
а не проще нарезать участки по зонам, а потом объеденить? я бы загрузил данные в БД и дальше sql'ем или использовал mitab
Я посмотрел свою прогу, у меня близкое там есть, но не совсем то. Ты мне пришли фрагменты этих таблиц, я добавлю. У меня на домашнем компьютере ни Mapinfo ни Автокадов нет и ставить я их не хочу. Выдели одни и те же участки в обоих таблицах и сделай экспорт в Mif. Вот их и пришли для отладки.
Я скачал и посмотрел Mif (tab не в чем смотреть, имей в виду). Там в регионах разное кол-во точек. Но я так понял, что это не важно, т.к. точки в них одни те же. Правильно? Проверил первую попавшую точку, сдвинута сантиметров на 5. Хотелось бы кое-что уточнить: кол-во десятичных знаков в координатах везде разное: 4213550.45 484807.9001 4213474.9 484856.5499 4212455.35 484143.26 4213416.05 484852.7 Я думаю, что их нужно привести к одному виду: 4213550.45 484807.90 4213474.90 484856.55 4212455.35 484143.26 4213416.05 484852.70 Так пойдет, или оставить как есть? Если оставить как есть, то первая таблица останется без изменений. Хотя думаю 0.0001 ничего не даст.
Уточнить хочу: точки из второй таблицы в первой все присутствуют? Ведь тогда получится, что часть точек сдвинется, причем на разные величины, а часть останется на прежнем месте. Фигня какая-то.
в таблице "Зона" - территориальные зоны, только часть границ у них совпадает с земельными участками из таблицы "зу_кпт". Соответственно разное колличество узлов. --- Сообщения объединены, 24 сен 2019, Оригинальное время сообщения: 24 сен 2019 --- только часть границы зоны (таблица Зона) должна быть совмещена с земельными участками(зу_кпт). Синяя - граница земельного участка
Ясно, притянутся только общие точки. А контроль основной таблицы, в данном случае "Зона" делать значить не нужно? В смысле что в ней одна и та же точка не может быть в разных вариантах (с отличающимися координатами)?
Я сделал, скачай проверь. Отпишешься. Ссылка: https://www.dropbox.com/s/62w1nahb1srb5mu/Mif_Kat_v2.43.rar?dl=0 См. Меню- Операции с Mif/Mid - Совмещение границ двух таблиц. Новый файл с приставкой в конце _Edit. Я не стал здесь мудрить, чтобы не затирать исходный, так что имей в виду.
Скачай еще раз: добавил индикатор выполнения. При больших объемах лишним не будет. Ссылка и версия без изменений: https://www.dropbox.com/s/62w1nahb1srb5mu/Mif_Kat_v2.43.rar?dl=0
Прога насчитала 123тыс точек, пока выполняется. Для 1й зоны из примера все сработало --- Сообщения объединены, 25 сен 2019, Оригинальное время сообщения: 25 сен 2019 --- Программа точно может обрабатывать большое кол-во точек)? Само окошко "Не отвечает", но процесс вроде грузит ЦП
Что именно не сработало? Могло не сработать из-за того, что переменной не хватило. Если у тебя по 100 с лишним тысяч точек, то Integer- это не белее 65 тыс. Нужно их переделать в Long - этот тип до 2 млрд. Щас посмотрю. --- Сообщения объединены, 25 сен 2019, Оригинальное время сообщения: 25 сен 2019 --- Возможно не хватает памяти: из первой таблицы в память грузятся только координаты, а вторая в память грузится вся полностью. Можно сделать, чтобы вторая таблица при загрузке с диска сразу исправлялась и писалась на диск. В общем выщли мне эти два Mif (только Mif, другие не нужно) в архиве на valang@mail.ru