Страница 5 из 7

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 09 апр 2012, 16:40
Донецков
Из простой задачи уже какой-то "монстр" получается, а так, конечно, хорошие пожелания...

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 10 апр 2012, 01:16
Institor
Мне кажется, это все уже лишнее. Задача однократная, вопросы оформления решаются в три клика после генерации (благо номенклатура есть). Ненужные полигоны легко удаляются примерно за 4 секунды :)

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 10 апр 2012, 12:21
Донецков
Еще раз автору ограмное спасибо, наверное лучшее решение этой задачи, которое встречал...

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 12 апр 2012, 13:53
Игорь Белов
Старый лис Mitrich зрит в корень, снимаю шляпу. Первые два замечания заставили ответить новой версией.

1. … сделать заливку прозрачной (в настройки?) — Сделано.
2. … нагенерил … листов, что пересекаются с буфером. — Сделано.
3. добавлять масштаб в атрибутику… — Неактуально, пока действует принцип «один масштаб — один слой».
4. подписи листов по-умолчанию… — Оставим пользователю.
5. транслитерация номеров листов… — А это в век Юникода оставим археологам.

Взаимодействие с пользователем изменилось незначительно.
[1 : 1 000 000] — покрытие глобуса миллионными листами;
[Создать листы…] — листы нужного масштаба создаются поверх объектов, выбранных в окне карты.

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 12 апр 2012, 16:50
Донецков
Спасибо, посмотрим...

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 13 апр 2012, 10:05
Донецков
Проверил, при создании листов получаем по 1 ряду по широте и долготе лишние, которые выходят за лист 1 млн. с южной и восточной стороны? Проверял на 1:25000, 1:100000, 1:500000 ...

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 13 апр 2012, 11:02
Старый Йети
Донецков писал(а):Проверил, при создании листов получаем по 1 ряду по широте и долготе лишние, которые выходят за лист 1 млн. с южной и восточной стороны? Проверял на 1:25000 и 1:100000...
Есть такое. И не только в этих мастабах. М 1:50000 тоже. На счет М 1:200000 уже не помню, но может автор проверит. Похоже, "система" какая-то закралась. :)
И ОГРОМНОЕ СПАСИБО за работу. КЛАСС!!

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 13 апр 2012, 13:51
Игорь Белов
Донецков писал(а):получаем по 1 ряду по широте и долготе лишние
Так должно быть. Попробую объяснить.
  • В четвёртой версии операция Построить листы… не зависит от созданной ранее миллионной основы.
    В качестве целевых выбираются объекты из произвольного слоя, и запускается операция. Листы в процессе генерируются в прямоугольной области с минимальным запасом, а окончательный результат выбирается оператором Intersects.
  • Если целевым объектом взять миллионный лист, то программа поступит с ним, как с простым объектом. Чтобы обеспечить полное покрытие этого объекта, она создаст дополнительные листы по краям. Они в итоге попадут в выборку, поскольку соприкасаются с объектом, а соприкасающиеся объекты считаются пересекающимися.
Итак, в соответствии с мудростью Mitrich'а экономятся ресурсы, которые раньше тратились на полное покрытие миллионного листа, и генерация происходит только в непосредственной близости от объектов интереса.
Ну а если нужно именно покрытие миллионного листа, могу предложить дюжину способов решения проблемы (разной степени извращённости). Самый простой — сгенерить листы и убить результат запроса вида

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

SELECT * FROM nomxxx WHERE Name NOT LIKE "N-37%"
Ну или что-нибудь в этом духе…

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 16 апр 2012, 07:53
Игорь Белов
Всё же подправил алгоритм. Однако он несовершенен, ибо изложенное в предшествующем посте остаётся в силе.
Итак, «лишних» листов вокруг целевой «миллионки» не будет, если выполняются два условия:
  • выбранные миллионные листы заполняют прямоугольник (например, 1×1);
  • число листов запрашиваемого масштаба, укладывающихся на «миллионке» от меридиана до меридиана, кратно четырём.
Вследствие второго условия в низких широтах будут «лишние» листы по западному и/или восточному меридианам для масштабов 1:200'000 и мельче; в широтах от 60° до 76° «лишние» листы будут при запросе масштаба 1:1'000'000.

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 19 апр 2012, 18:40
Boris
Спасибо за программу.
Есть только два небольших пожелания:
а) при создании таблицы учитывать границы выбранного объекта при создании результирующей таблицы
б) позволить выбирать плоскую проекцию, опять же для тех целей, что бы можно было задать границы
Как сами понимаете мапинфо со своими целочисленными границами дает хорошие погрешности в позиционировании.

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 19 апр 2012, 19:38
Игорь Белов
Boris писал(а):Спасибо за программу.
Есть только два небольших пожелания:
а) при создании таблицы учитывать границы выбранного объекта при создании результирующей таблицы
б) позволить выбирать плоскую проекцию, опять же для тех целей, что бы можно было задать границы
Как сами понимаете мапинфо со своими целочисленными границами дает хорошие погрешности в позиционировании.
Простите, Boris. Похоже, нас разделяет океан непонимания.

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 21 апр 2012, 16:32
Донецков
Уважаемый АВТОР очень полезной утилиты, а Вы не задумывались, чтобы программа могла расчитыать не стандартные номенклатуры (например, СК-63)...?

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 23 апр 2012, 08:15
Игорь Белов
Донецков писал(а):…а Вы не задумывались, чтобы программа могла расчитывать не стандартные номенклатуры (например, СК-63)...?
Разграфка листов СК-63 стандартна. Вот утилита nom63, реализующая этот стандарт. Интерфейс как у nom42.
Есть особенности.
  • СК-63 не глобальна, а состоит из множества блоков, ограниченных территориально и идентифицируемых литерами от A до Z. Программа не знает о территориальной ограниченности. Пользователь должен знать, какой блок его интересует, и правильно указать буковку.
  • Удвоение листов в СК-63 имеется, но я не видел одинарных и двойных в месте стыковки. Пока реализовал так: если середина стотысячного листа севернее 60°, все листы более крупных масштабов на нём удваиваются; аналогично с учетверением севернее 76°.
  • Параметры блоков программа читает из таблицы данных nom63. В таблице три колонки: Литера, долгота и широта ЮЗ угла листа Л-1-1. Пока в таблице только блоки D, R, L, V.
Таблица данных должна находиться в директории с MBX.
Пользователь может добавлять в таблицу свои блоки. Однако хотелось бы, чтобы не только утилита была доступна сообществу, но и данные для неё, посему создаю новый тред.

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 23 апр 2012, 08:28
Игорь Белов
Параллельно с кодированием nom63 правил nom42. В основном стилистика; есть багфикс (мог проявиться на 88-й параллели). Изменил имя для миллионного файла с nom1mln на nom42.

Re: Сделать разграфку топокарт 1:25 000 и 1:50 000

Добавлено: 23 апр 2012, 10:21
Донецков
Очень оперативно, спасибо, посмотрим....
для добавления параметров возможно пригодится: http://giscraft.ru/maps/navigat.shtml