Страница 1 из 1

Условный знак с определенным шагом

Добавлено: 17 фев 2009, 10:13
Braz
Есть классификатор, который регламентирует оформление в условных знаках сады - как точечные объекты. Каким образом автоматизировать процесс, чтобы условный знак (точечный объект) создавался с определенным шагом, если не использовать импорт из других программ?

Re: Условный знак с определенным шагом

Добавлено: 18 фев 2009, 00:02
Boris
Очень просто, на бумаге :) На практике придется немного поработать руками. Если не хотите прибегать к множественному программированию.
По шагам:
1. определиться с макс-мин границами вашей максимальной заливки в левый-нижний/правый верхний угол
2. Любую доступную вам среду программирования. Можно MapBasic.
3. создаете программу, которая на основе двух циклов - от мин до макс по X и от мин до макс по Y строит пары координат в выбраноv вами максимальном диапазоне.
4. Сохраняете результат работы программы в текстовый файл.

:!: Я как правило пользуюсь встроенной командой командной строки Windows XP
for /L %a (1,1,1000) do @echo %a >> 1.txt
быстро удобно и не надо ничего искать.

5. Полученный текстовый файл загружает в MapInfo
6. Сохраняем его как таблицу в формате MapInfo
7. Открываем эту таблицу. Идем в команду меню Table Structure - будем исправлять структуру этой таблицы
8. Ставим галочку - таблица имеет гео-объекты : Table is Mappble
9. Выбираем нужную проекцию.
10. Выполняем геокодирование всех созданных точек командой Table -> Create Points
11. Там указываем поле координат по X и Y, можно еще раз задать проекцию
12. ПОлучаем поле точек.
13. Делаем это поле точек редактируемым слоем
14. загружаем контура, которые должны быть заполнены этими символами
15. выделяем весь слой точек- будущих условных знаков. Делаем его слоем обработки - Objects->Set Target
16. Выделяем весь слой контуров (надеюсь, что это полигоны)
17. Применяем команду Objects->Erase Outside
18. Получили точки, которые остались только внутри наших контуров. Присваиваем им требуемое оформление.
19. Сохраняем таблицу.
--- Уф... Вот и все. ----
По правде писать дольше, чем делать.
----
Не знаю каков объем ваших заливок, но MapInfo выдерживает много точек. Хотя и не бесконечно много. Что-то около 1 млн точек на одну таблицу.
-----
Если ваши контура имеют редкое покрытие или задачу надо регулярно повторять, то разумно будет написать программку на MapBasic'е, которая будет все это делать только применительно к каждому контуру в отдельности.

Re: Условный знак с определенным шагом

Добавлено: 18 фев 2009, 12:39
Braz
Boris писал(а):Очень просто, на бумаге :) На практике придется немного поработать руками. Если не хотите прибегать к множественному программированию..................
Сенкс, идея хорошая, думаю без мапбэсик можно обойтись так: создать несколько точек в мапинфо, открыть текстовым редактором, выправить к нужному виду, а дальше - как описано во втором абзаце!

Re: Условный знак с определенным шагом

Добавлено: 24 фев 2009, 17:10
SS_Rebelious
думаю без мапбэсик можно обойтись так: создать несколько точек в мапинфо, открыть текстовым редактором, выправить к нужному виду, а дальше - как описано во втором абзаце!


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

Re: Условный знак с определенным шагом

Добавлено: 25 фев 2009, 04:17
Boris
SS_Rebelious писал(а):
думаю без мапбэсик можно обойтись так: создать несколько точек в мапинфо, открыть текстовым редактором, выправить к нужному виду, а дальше - как описано во втором абзаце!


Поддерживаю, только я бы в первую очередь создал (автозаполнением) экселевский файл с координатами точек, покрывающими нужную область, с нужным шагом, а потом воспользовался бы в мапинфо функцией "создать точечные объекты" из получившейся таблички.
Позволю себе себя же и процитировать:
Я как правило пользуюсь встроенной командой командной строки Windows XP
for /L %a (1,1,1000) do @echo %a >> 1.txt
Я и не ратую за лишние программы. Для кого-то написать два вложенных цикла на любом языке программирования - 2 минуты, для кого-то ближе Excel, хотя как-то мне ни разу не приходила в голову мысль, что он делает авто заполнение и по двум колонкам.
Для меня быстрее всего получается текстовый файл из командной строки Windows XP (cmd.exe). для блока 1000х1000 точек от 0 до 999, соответственно, у меня получается
for /L %a in (0,1,999) do for /L %b in (0,1,999) do @echo %a; %b >> 1.txt
1 минута и файл 1.txt с координатами получен, и м.б. загружен в MapInfo.
Создание такого файла - полное дело вкуса, навыков и фантазии, и точно на результате не сказывается. При не очень больших трудозатратах можно и MIF сгенерить в те же 2-3 минуты.

Re: Условный знак с определенным шагом

Добавлено: 25 фев 2009, 11:46
Braz
Boris писал(а):
SS_Rebelious писал(а):
думаю без мапбэсик можно обойтись так: создать несколько точек в мапинфо, открыть текстовым редактором, выправить к нужному виду, а дальше - как описано во втором абзаце!


Поддерживаю, только я бы в первую очередь создал (автозаполнением) экселевский файл с координатами точек, покрывающими нужную область, с нужным шагом, а потом воспользовался бы в мапинфо функцией "создать точечные объекты" из получившейся таблички.
Позволю себе себя же и процитировать:
Я как правило пользуюсь встроенной командой командной строки Windows XP
for /L %a (1,1,1000) do @echo %a >> 1.txt
Я и не ратую за лишние программы. Для кого-то написать два вложенных цикла на любом языке программирования - 2 минуты, для кого-то ближе Excel........
Насколько я знаю, среда мапбесик-платная... или я ошибаюсь?!
____________________________________________________________________________________________________
Boris-у 100 грамм водки! :D

Re: Условный знак с определенным шагом

Добавлено: 27 фев 2009, 03:56
Boris
Ошибаетесь. :D
Невероятное американское бескорыстие. Версии 9.0 и 9.5, и можно надеяться и дальше, пока все же не выйдет MapInfo со встроенным VBA (или VB.Net) - бесплатные.
Английские. Русские, за перевод, - платные.
К стати, по описанию в 9.5 встроена расширенная поддержка VB.Net и прочих xxx.Net от Visual Studio Net. Но сам не пробовал, поэтому не скажу насколько она "расширенная".