www.map-info.ru :: Просмотр темы - Земная проекция
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  
На страницу 1, 2  След.
 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
DragonFire



Зарегистрирован: 12.07.2009
Сообщения: 35

СообщениеДобавлено: Вт Июл 28, 2009 4:26 pm    Заголовок сообщения: Земная проекция Добавить ответ со ссылкой на данный текст

День добрый всем.

Вопрос вот такой, допустим, у нас есть карта с системой координат такого вида:
CoordSys Earth Projection 1, 0

Теперь я хочу нарисовать круг с радиусом 10 в некоторой точке. Как мне правильно задать СК для рисования?
Т.Е. мне нужно что-то вроде CoordSys Earth Projection 1, 0, "km" но так не работает...

Заранее спасибо огромное!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вт Июл 28, 2009 10:52 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Set CoordSys Earth Projection 1, 0
Set Distance Units "km"
obj = CreateCircle(x,y,radius)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
DragonFire



Зарегистрирован: 12.07.2009
Сообщения: 35

СообщениеДобавлено: Ср Июл 29, 2009 8:46 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Создается эллипс с радиусом в 10 градусов (а может еще чего?), но точно не километров, т.к. километров в нем получается по горизонтале примерно 91 а по вертикали 110.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DragonFire



Зарегистрирован: 12.07.2009
Сообщения: 35

СообщениеДобавлено: Пт Июл 31, 2009 12:01 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

И чего, никто не знает как работать с земной проекцией? Shocked
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вс Авг 02, 2009 11:10 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Воссоздал все действия, которые я описал в окне MapBasic в MapInfo. Все получилось. В чем у вас проблема?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
DragonFire



Зарегистрирован: 12.07.2009
Сообщения: 35

СообщениеДобавлено: Вс Авг 02, 2009 11:58 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Открываю таблицу
Open Table "C:\Table1.tab"
Map From "Table1"

Задаю проекцию и расстояние (как у Вас)
Set CoordSys Earth Projection 1, 0"
Set Distance Units \"km\"

Создаю временную таблицу
Create Table tmp ("Номер" SmallInt,"Название" Char(50)) File "C:\tmp.tab" Type DBF CharSet "WindowsCyrillic"
Create Map For tmp
Add Map Window FrontWindow() Layer tmp

Рисую объект
Dim o_Ellipse as Object
Create Ellipse Into Variable o_Ellipse (X-0.5,Y-0.5) (X+0.5,Y+0.5)
Insert Into tmp (Название,obj) Values ("Круг",o_Ellipse)

Получаю такую картинку:


Как видно из рисунка - получился не круг с радиусом 0.5, а эллипс 110 на 60 км...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DragonFire



Зарегистрирован: 12.07.2009
Сообщения: 35

СообщениеДобавлено: Вс Авг 02, 2009 12:03 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

А вот я тоже воссоздал свои действия в окне MapBasic. Тот же результат:
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вс Авг 02, 2009 1:39 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

1. Не видно координатной системы некой таблицы "C:\Table1.tab". Если она отличается от CoordSys Earth Projection 1, 0, то это может повлиять на результат.
2. Не понял как вы воссоздали последовательность действий в окне MapBasic? Просто так скопировать туда текст - это не приводит к реализации этих действий. Нужно на каждой команде нажать клавишу Enter, последовательно. В вашем случае я не смог, на командах:
Set CoordSys Earth Projection 1, 0"
Set Distance Units \"km\"
выдает ошибку. На первой команде кавычка в конце лишняя. На второй - маскировка \" не нужна, нужно просто "
Это говорит о том, что их окна MapBsic вы не производили эти действия.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
DragonFire



Зарегистрирован: 12.07.2009
Сообщения: 35

СообщениеДобавлено: Вс Авг 02, 2009 2:53 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

1. Именно у этой таблицы и задана такая координатная система... И от этого все проблемы...
2. Прошу прощения, несколько команд было в буфере, поэтому не обратил внимания что ошибки произошли.
Вот точно работающий код:

Close All Interactive
Open Table "F:\Projects\C#\MapInfo\TestMapInfo\Map\MAP\Гидр_l.TAB" Interactive
Map From Гидр_l
Set CoordSys Earth Projection 1, 0
Set Distance Units "km"
Create Table tmp ("Номер" SmallInt,"Название" Char(50)) File "C:\tmp1.tab" Type DBF CharSet "WindowsCyrillic"
Create Map For tmp
Add Map Window FrontWindow() Layer tmp
Dim o_Ellipse as Object
Create Ellipse Into Variable o_Ellipse (36-0.5,51.5-0.5) (36+0.5,51.5+0.5)
Insert Into tmp (Название,obj) Values ("Круг",o_Ellipse)

А вот таблица:
http://ifolder.ru/13367452

З.Ы. Только путь к карте надо поправить...

З.З.Ы А если еще дописать потом
print SessionInfo(1)
print TableInfo(Гидр_l,37)
print TableInfo(tmp,37)
То отчетливо видно что СКвсех таблиц и сессии совпадают...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вс Авг 02, 2009 4:04 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Подождите, вам надо нарисовать круг радиусом 10 км, в исходном посте.
Круг радиусом 10 км рисуется командой CreateCircle. Команда Create Ellipse, рисует эллипс, причем ее формат:
Create Ellipse
[ Into { Window window_id | Variable var_name } ]
( x1, y1) ( x2, y2)
[ Pen . . . ]
[ Brush . . . ]

т.е. вы задаете КООРДИНАТЫ границ эллипсы. Координаты у вас в градусах! Это расстояние у вас в километрах, но оно никак не влияет на команду Create Ellipse. Поэтому или вы самостоятельно переводите координаты в километры, или пользуйтесь CreateCircle.
Вставил вместо вашей команды
Create Ellipse Into Variable o_Ellipse (36-0.5,51.5-0.5) (36+0.5,51.5+0.5)
такую
o_Ellipse = CreateCircle(36,51.5,1)
и все получилось.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
DragonFire



Зарегистрирован: 12.07.2009
Сообщения: 35

СообщениеДобавлено: Вс Авг 02, 2009 4:35 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Да, у меня теперь тоже Smile
Гениально, спасибо огромное!

Еще вопрос - а как добавить фиксированный текст в ту же таблицу к кругу? Проблема вот какая - там надо указать размер блока, в который текст вписываться, причем установки размера шрифта игнорируются.
А как определить какой по размеру блок нужен тексту? Сейчас у меня это сложная функция зависящая от масштаба карты и количества символов.
А нет ли стандартных методов?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вс Авг 02, 2009 8:09 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

1. Может быть проще будет подписать круг, т.е. вписать необходимый текст в одно из полей таблицы с кругом, и включить вывод подписей из этого поля. Подписи в MapInfo очень неплохо реализованы.
2. CreateText(window_id , x , y , text , angle , anchor , offset)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
DragonFire



Зарегистрирован: 12.07.2009
Сообщения: 35

СообщениеДобавлено: Вс Авг 02, 2009 9:26 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

А может тогда стоит создать объект "точка" с подписью?)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Пн Авг 03, 2009 4:21 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Можно и точку с подписью, если есть желание плодить объекты на слое
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
DragonFire



Зарегистрирован: 12.07.2009
Сообщения: 35

СообщениеДобавлено: Пн Авг 03, 2009 9:24 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Мне нужно перемещать надпись отдельно от круга Smile
Кстати, не подскажите в сторону каких команд копать...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru