Страница 1 из 3
Добавление в таблицу колонок координат точек
Добавлено: 31 окт 2011, 13:09
1985student
подскажите пожалуйста как в таблицу, состоящую только из точечных объектов добавить 2 колонки в которых автоматически бы были прописаны координаты этих объектов?
Re: Добавление в таблицу колонок координат точек
Добавлено: 31 окт 2011, 15:55
kamennovs
Меню Программы>Каталог программ>Записать координаты объекта (Coordinate Extractor)
Re: Добавление в таблицу колонок координат точек
Добавлено: 31 окт 2011, 19:22
1985student
Большое спасибо, Колонки с координатами появились,только никак не могу разобраться, что сделать,чтобы значения отображались,как Градусы минуты секунды с соответствующими обозначениями?
Re: Добавление в таблицу колонок координат точек
Добавлено: 01 ноя 2011, 08:51
kamennovs
Меню Программы>Каталог программ>Пересчет (Degree Converter)
Re: Добавление в таблицу колонок координат точек
Добавлено: 01 ноя 2011, 09:21
1985student
Я имею в виду, чтобы в колонках были не такие значения (9 096 353,34), а вот именно такие (44° 41' 12,26148"). Возможно ли это ?????
Re: Добавление в таблицу колонок координат точек
Добавлено: 01 ноя 2011, 10:22
kamennovs
Вот источник
http://support.microsoft.com/kb/213449
Для пересчета нужно экспортировать таблицу Таблица>Экспорт в dbf (у меня именно с ним вышло), в экселе произвести все операции как прописано в источнике и сохранить таблицу как файл xls. В Mapinfo он легко откроется и ваши колонки будут иметь вид ГМС в стандартном исполнении.
Re: Добавление в таблицу колонок координат точек
Добавлено: 01 ноя 2011, 10:27
1985student
Огромнейшее спасибо!
Re: Добавление в таблицу колонок координат точек
Добавлено: 01 ноя 2011, 13:52
1985student
Я так понял в Microsoft Visual Basic, каждую координату нужно вбивать отдельно??? Я правильно понимаю?
Re: Добавление в таблицу колонок координат точек
Добавлено: 01 ноя 2011, 14:29
kamennovs
Ничего отдельно вбивать не нужно. Есть колонка B с десятичными координатами, берет начало с ячейки B2, есть колонка С, где будут ГМС, берет начало с ячейки C2. После того как вы создали модуль, возвращаетесь в excel и в ячейку C2 вписываете =Convert_Degree(B2),нажимаете ввод. Затем растягиваете формулу =Convert_Degree(B2) вниз на всю колонку С.
=Convert_Degree(B3)
=Convert_Degree(B4)
=Convert_Degree(B5)
=Convert_Degree(B6)
.....
И все, колонка С имеет ГМС.
Трогать код Visual Basic не надо.
Re: Добавление в таблицу колонок координат точек
Добавлено: 02 ноя 2011, 06:29
Institor
Есть еще программа mapinfo "Пересчет градусов" (входит в стандартный набор). Правда она выводит в одну колонку с разделителями, без обозначений (°, ' , ")
Re: Добавление в таблицу колонок координат точек
Добавлено: 02 ноя 2011, 07:20
gamm
а зачем все эти мучения?
просто написать что-то типа (foo - исходные градусы десятичные)
Format$(int(foo),"#") + "o"+
Format$(int(60*(foo-int(foo))),"#") +"'"+
Format$(((foo-int(foo))-int(60*(foo-int(foo)))/60)*3600,"#.#####")+""""
религия не позволяет?
P.S. это на скорую руку, могут быть очепятки ...
Re: Добавление в таблицу колонок координат точек
Добавлено: 02 ноя 2011, 07:40
Institor
Это гениально!
Re: Добавление в таблицу колонок координат точек
Добавлено: 02 ноя 2011, 08:30
kamennovs
Да. Красивое решение. Я предполагал, что все это можно было сделать используя строковые функции Mapinfo, но так и недопетрил как это осуществить. Сразу видно программист постарался.
Re: Добавление в таблицу колонок координат точек
Добавлено: 02 ноя 2011, 08:34
1985student
Объясню всё подробнее. У меня имеются точки, я при помощи программы "Записать координаты объекта" добавляю 2 колонки с координатами в свою таблицу. Эти координаты отображены в метрах(9596880,25532872-это координата широты одной точки), а мне же как минимум для того чтобы воспользоваться Visual Basic нужно иметь координаты в десятичных градусах(52,70559554), в таблице MapInfo их в таком виде отобразить не получается, вот и в итоге тупик.

Re: Добавление в таблицу колонок координат точек
Добавлено: 02 ноя 2011, 08:56
kamennovs
Можно еще вот так унифицировать выражение.
Format$(int(foo),"#") + Chr$( 176 ) +
Format$(int(60*(foo-int(foo))),"#") +Chr$( 146 ) +
Format$(((foo-int(foo))-int(60*(foo-int(foo)))/60)*3600,"#.#####")+Chr$( 148 )