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

Получение, новые источники, открытость
Ответить
Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

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

Сообщение Донецков » 09 апр 2012, 16:40

Из простой задачи уже какой-то "монстр" получается, а так, конечно, хорошие пожелания...

Аватара пользователя
Institor
Активный участник
Сообщения: 243
Зарегистрирован: 22 апр 2011, 08:10
Репутация: 27
Откуда: Хабаровск

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

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

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

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

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

Сообщение Донецков » 10 апр 2012, 12:21

Еще раз автору ограмное спасибо, наверное лучшее решение этой задачи, которое встречал...

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

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

Сообщение Игорь Белов » 12 апр 2012, 13:53

Старый лис Mitrich зрит в корень, снимаю шляпу. Первые два замечания заставили ответить новой версией.

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

Взаимодействие с пользователем изменилось незначительно.
[1 : 1 000 000] — покрытие глобуса миллионными листами;
[Создать листы…] — листы нужного масштаба создаются поверх объектов, выбранных в окне карты.
Вложения
nom42-4.0.mbx.zip
mbx
(6.25 КБ) 485 скачиваний
nom42-4.0.src.zip
Исходники
(6.78 КБ) 446 скачиваний
The purpose of computing is insight, not numbers

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

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

Сообщение Донецков » 12 апр 2012, 16:50

Спасибо, посмотрим...

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

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

Сообщение Донецков » 13 апр 2012, 10:05

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

Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

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

Сообщение Старый Йети » 13 апр 2012, 11:02

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

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

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

Сообщение Игорь Белов » 13 апр 2012, 13:51

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

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

SELECT * FROM nomxxx WHERE Name NOT LIKE "N-37%"
Ну или что-нибудь в этом духе…
The purpose of computing is insight, not numbers

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

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

Сообщение Игорь Белов » 16 апр 2012, 07:53

Всё же подправил алгоритм. Однако он несовершенен, ибо изложенное в предшествующем посте остаётся в силе.
Итак, «лишних» листов вокруг целевой «миллионки» не будет, если выполняются два условия:
  • выбранные миллионные листы заполняют прямоугольник (например, 1×1);
  • число листов запрашиваемого масштаба, укладывающихся на «миллионке» от меридиана до меридиана, кратно четырём.
Вследствие второго условия в низких широтах будут «лишние» листы по западному и/или восточному меридианам для масштабов 1:200'000 и мельче; в широтах от 60° до 76° «лишние» листы будут при запросе масштаба 1:1'000'000.
Вложения
nom42-4.1.mbx.zip
MBX
(6.32 КБ) 442 скачивания
nom42-4.1.src.zip
Исходники
(7.07 КБ) 455 скачиваний
The purpose of computing is insight, not numbers

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

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

Сообщение Boris » 19 апр 2012, 18:40

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

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

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

Сообщение Игорь Белов » 19 апр 2012, 19:38

Boris писал(а):Спасибо за программу.
Есть только два небольших пожелания:
а) при создании таблицы учитывать границы выбранного объекта при создании результирующей таблицы
б) позволить выбирать плоскую проекцию, опять же для тех целей, что бы можно было задать границы
Как сами понимаете мапинфо со своими целочисленными границами дает хорошие погрешности в позиционировании.
Простите, Boris. Похоже, нас разделяет океан непонимания.
The purpose of computing is insight, not numbers

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

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

Сообщение Донецков » 21 апр 2012, 16:32

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

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

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.
Пользователь может добавлять в таблицу свои блоки. Однако хотелось бы, чтобы не только утилита была доступна сообществу, но и данные для неё, посему создаю новый тред.
Вложения
nom63-1.0.dat.zip
Параметры
(537 байт) 470 скачиваний
nom63-1.0.mbx.zip
MBX
(5.41 КБ) 482 скачивания
nom63-1.0.src.zip
Исходники
(6.34 КБ) 510 скачиваний
The purpose of computing is insight, not numbers

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

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

Сообщение Игорь Белов » 23 апр 2012, 08:28

Параллельно с кодированием nom63 правил nom42. В основном стилистика; есть багфикс (мог проявиться на 88-й параллели). Изменил имя для миллионного файла с nom1mln на nom42.
Вложения
nom42-4.2.mbx.zip
MBX
(6.2 КБ) 458 скачиваний
nom42-4.2.src.zip
Исходники
(7.06 КБ) 443 скачивания
The purpose of computing is insight, not numbers

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

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

Сообщение Донецков » 23 апр 2012, 10:21

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

Ответить

Вернуться в «Данные»

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

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