Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Совмещение узлов mapinfo

Тема в разделе "MapInfo", создана пользователем Mihail_Kadastr, 23 сен 2019.

  1. Mihail_Kadastr

    Форумчанин

    Регистрация:
    31 янв 2017
    Сообщения:
    29
    Симпатии:
    2
    Ребят может знает кто как массово можно притянуть все узлы одного слоя к узлам другого слоя в заданном радиусе (0.1м, 0.09м и т.д.).
    Было выполнено зонирование территории и границы зон не сходятся с границами участков на КПТ. Каждый узел зоны отлетает от узла участка на КПТ на 1-7см.
    пример.png
     
    #1
  2. Valang

    Форумчанин

    Регистрация:
    9 фев 2012
    Сообщения:
    2.770
    Симпатии:
    2.215
    Адрес:
    г.Магадан
    Поискать утилиты, можно здесь: http://glab2007.narod.ru/d/mu.html
    Можно написать свою, если не найдешь. Mapbasic знать не обязательно: это можно написать в любом языке программирования, а обрабатывать файлы Mif - это обычный текстовый формат.
     
    #2
  3. Mihail_Kadastr

    Форумчанин

    Регистрация:
    31 янв 2017
    Сообщения:
    29
    Симпатии:
    2
    Там уже смотрел, не нашел программ с подобной функцией. А самому написать что-то мозгов не хватает.
     
    #3
  4. Valang

    Форумчанин

    Регистрация:
    9 фев 2012
    Сообщения:
    2.770
    Симпатии:
    2.215
    Адрес:
    г.Магадан
    Ну а чё там писать. Экспортируешь обе таблицы в 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
     
    #4
    Последнее редактирование: 24 сен 2019
  5. Mihail_Kadastr

    Форумчанин

    Регистрация:
    31 янв 2017
    Сообщения:
    29
    Симпатии:
    2
    Спасибо, пойду изучать. т.к. совмещать узлы в ручную - не вариант, больше 500000 узлов примерно. Логически выглядит просто (у меня одни площадные объекты), но реализовать не хватает ума.
     
    #5
  6. trir

    Форумчанин

    Регистрация:
    25 ноя 2014
    Сообщения:
    3.253
    Симпатии:
    931
    Адрес:
    gnomtrir@mail.ru
    а не проще нарезать участки по зонам, а потом объеденить?
    я бы загрузил данные в БД и дальше sql'ем
    или использовал mitab
     
    #6
  7. Valang

    Форумчанин

    Регистрация:
    9 фев 2012
    Сообщения:
    2.770
    Симпатии:
    2.215
    Адрес:
    г.Магадан
    Я посмотрел свою прогу, у меня близкое там есть, но не совсем то. Ты мне пришли фрагменты этих таблиц, я добавлю. У меня на домашнем компьютере ни Mapinfo ни Автокадов нет и ставить я их не хочу. Выдели одни и те же участки в обоих таблицах и сделай экспорт в Mif. Вот их и пришли для отладки.
     
    #7
  8. Mihail_Kadastr

    Форумчанин

    Регистрация:
    31 янв 2017
    Сообщения:
    29
    Симпатии:
    2
    Вот подготовил mif
     

    Вложения:

    • тест.zip
      Размер файла:
      13,7 КБ
      Просмотров:
      4
    #8
  9. Valang

    Форумчанин

    Регистрация:
    9 фев 2012
    Сообщения:
    2.770
    Симпатии:
    2.215
    Адрес:
    г.Магадан
    Я скачал и посмотрел 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 ничего не даст.
     
    #9
    Последнее редактирование: 24 сен 2019
    Mihail_Kadastr нравится это.
  10. -=13=-

    Форумчанин

    Регистрация:
    26 июн 2013
    Сообщения:
    2.254
    Симпатии:
    3.320
    Адрес:
    Окраины Нерезиновска на немцеопасном направлении
    А если экспортировать в mif/mid или шэйп и попробовать другими ГИС-системами?
     
    #10
  11. Mihail_Kadastr

    Форумчанин

    Регистрация:
    31 янв 2017
    Сообщения:
    29
    Симпатии:
    2
    так пойдет, не знаю почему 2я таблица выгрузилась с 4мя знаками после запятой.
     
    #11
  12. trir

    Форумчанин

    Регистрация:
    25 ноя 2014
    Сообщения:
    3.253
    Симпатии:
    931
    Адрес:
    gnomtrir@mail.ru
    bounds
     
    #12
  13. Mihail_Kadastr

    Форумчанин

    Регистрация:
    31 янв 2017
    Сообщения:
    29
    Симпатии:
    2
    Пределы одинаковые выставлены.
     
    #13
  14. Valang

    Форумчанин

    Регистрация:
    9 фев 2012
    Сообщения:
    2.770
    Симпатии:
    2.215
    Адрес:
    г.Магадан
    Уточнить хочу: точки из второй таблицы в первой все присутствуют? Ведь тогда получится, что часть точек сдвинется, причем на разные величины, а часть останется на прежнем месте. Фигня какая-то.
     
    #14
    Mihail_Kadastr нравится это.
  15. Mihail_Kadastr

    Форумчанин

    Регистрация:
    31 янв 2017
    Сообщения:
    29
    Симпатии:
    2
    в таблице "Зона" - территориальные зоны, только часть границ у них совпадает с земельными участками из таблицы "зу_кпт". Соответственно разное колличество узлов.
    --- Сообщения объединены, 24 сен 2019, Оригинальное время сообщения: 24 сен 2019 ---
    только часть границы зоны (таблица Зона) должна быть совмещена с земельными участками(зу_кпт). Синяя - граница земельного участка
    Безымянный2.png
     
    #15
  16. Valang

    Форумчанин

    Регистрация:
    9 фев 2012
    Сообщения:
    2.770
    Симпатии:
    2.215
    Адрес:
    г.Магадан
    Ясно, притянутся только общие точки. А контроль основной таблицы, в данном случае "Зона" делать значить не нужно? В смысле что в ней одна и та же точка не может быть в разных вариантах (с отличающимися координатами)?
     
    #16
    Mihail_Kadastr нравится это.
  17. Valang

    Форумчанин

    Регистрация:
    9 фев 2012
    Сообщения:
    2.770
    Симпатии:
    2.215
    Адрес:
    г.Магадан
    Я сделал, скачай проверь. Отпишешься. Ссылка: https://www.dropbox.com/s/62w1nahb1srb5mu/Mif_Kat_v2.43.rar?dl=0
    См. Меню- Операции с Mif/Mid - Совмещение границ двух таблиц.
    Новый файл с приставкой в конце _Edit. Я не стал здесь мудрить, чтобы не затирать исходный, так что имей в виду.
     
    #17
    Mihail_Kadastr нравится это.
  18. Valang

    Форумчанин

    Регистрация:
    9 фев 2012
    Сообщения:
    2.770
    Симпатии:
    2.215
    Адрес:
    г.Магадан
    #18
    -=13=-, FlaShTroN и Mihail_Kadastr нравится это.
  19. Mihail_Kadastr

    Форумчанин

    Регистрация:
    31 янв 2017
    Сообщения:
    29
    Симпатии:
    2
    Прога насчитала 123тыс точек, пока выполняется. Для 1й зоны из примера все сработало
    --- Сообщения объединены, 25 сен 2019, Оригинальное время сообщения: 25 сен 2019 ---
    Программа точно может обрабатывать большое кол-во точек)? Само окошко "Не отвечает", но процесс вроде грузит ЦП
    Безымянный.png
     
    #19
  20. Valang

    Форумчанин

    Регистрация:
    9 фев 2012
    Сообщения:
    2.770
    Симпатии:
    2.215
    Адрес:
    г.Магадан
    Что именно не сработало? Могло не сработать из-за того, что переменной не хватило. Если у тебя по 100 с лишним тысяч точек, то Integer- это не белее 65 тыс. Нужно их переделать в Long - этот тип до 2 млрд. Щас посмотрю.
    --- Сообщения объединены, 25 сен 2019, Оригинальное время сообщения: 25 сен 2019 ---
    Возможно не хватает памяти: из первой таблицы в память грузятся только координаты, а вторая в память грузится вся полностью.
    Можно сделать, чтобы вторая таблица при загрузке с диска сразу исправлялась и писалась на диск.
    В общем выщли мне эти два Mif (только Mif, другие не нужно) в архиве на valang@mail.ru
     
    #20

Поделиться этой страницей

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление