Форум картографов, карты MapInfo, Google maps

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум картографов, карты MapInfo, Google maps » MapBasic » Земная проекция


Земная проекция

Сообщений 1 страница 17 из 17

1

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

Задача такая - нарисовать на карте круг, радиусом 10 км.

Допустим у нас есть карта с системой координат такого вида:
CoordSys NonEarth Units "m"
Тогда перед тем как создавать объект, я устанавливаю СК:
Set CoordSys NonEarth Units "km"
И рисую круг радиусом 10. Все отлично работает, рисуется круг, если его сохранить и потом измерить линейкой MapInfo, то выдается все как надо.

А теперь возмем карта с системой координат такого вида:
CoordSys Earth Projection 1, 0
Как мне в этом случае правильно задать СК для рисования?
Если я напишу:
Set CoordSys Earth Projection 1, 0, "km"
то он начнет ругаться, что неверное количество параметров. Запускается при таких параметрах:
Set CoordSys Earth Projection 12, 0, "km", 0
Но при радиусе 100км получается круг, по вертикали круг получается радиусом 109 км, по горизонтали 103 км...
http://img7.imageshost.ru/imgs/090718/a5f3fc4fca/2f76a.jpg

Как быть?

З.Ы. Set Distance Units "km"  не помогает - влияет только на единицы измерения, которые отображает линейка...

Заранее спасибо огромное! Очень срочно надо...

Отредактировано DragonFire (2009-07-29 21:22:36)

2

А ты нарисуй круг в той проекции в которой получается , а потом сохрани копию в нужной проекции

3

если не получится, попробуй преобразовать площадной круг в полилинию а потом обратно в площадной, я когдато тоже так возился но с прямоугольником

4

MorAlex
1) Тоесть сначало нарисовать в таблице в СК CoordSys NonEarth Units "km", а потом сохранить в СК, как у исходной карты?
2) А тут можно поподробнее... Ссылки например...

5

1) ну типа того
2) выбери объект, потом в контекстном меню выбери преобразовать в полилинию

6

MorAlex
1) Попробовал так, толку никакого..(
2) у меня нету контекстных меню :) Я все через MapBasic делаю...

7

тогда найди такую команду в справочнике

8

А я почему-то думал что нельзя так просто преобразовать круг в полилинию и обратно, т.к. полилиния это линейный объект, а круг - область...

9

как видишь - можно...

10

Загружаю карту с СК Earth Protection 1,0
Задаю глобальную СК NonEarth Units "km"
И рисую круг с радиусов 100 так:
Create Ellipse Into Variable o_Ellipse (X - R, Y - R) ( X + R, Y + R) ...
Insert Into mytable (Название,obj) Values (\"Круг\",ConvertToRegion(o_Ellipse))

Получаю картинку:
http://img7.imageshost.ru/imgs/090801/cbb82e4d9e/6f9ec.jpg
Когда делаю замер линейкой в MapInfo получаю по вертикали 200км (как и должно быть), а по горизонтали 125км...

З.Ы. Кстати, при выводе текста с помощью Create Text получаю иероглифы... Не знаете в чем может быть проблема?

Отредактировано DragonFire (2009-08-01 08:09:08)

11

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

12

Что значит "как буферную зону"?)

13

С языком кстати проблема не в Windows - ща на русской винде проверил...
Сначала думал что проблема в кодировке таблицы, в которую я пишу текст. Ведь другой текст с других карт отображается нормально.. Но не заработало даже после прописи строки Type DBF CharSet "WindowsCyrillic" в создание таблицы...

14

Проблема со шрифтами решилась установкой "MS Sans Serif". Arial, Times New Rouman и т.д. не пашут...

15

есть в программе функция - создание буферной зоны. ставишь точку и создаешь вокруг нее буферную окружность нужного радиуса

16

Тоже самое :(
Видимо дело все-же в СК...

Нельзя никак задать для Earth Protection 1,0 еденицы измерения километры а не градусы? и вообще что означают параметры 1 и 0?

17

Не путай систему координат и единицы измерений.
Круг создаешь командой CreateCircle(x, y, radius), где X и Y координаты центра в той системе координат, которая была объявлена ранее , radius - радиус окружности в тех единицах которые тоже были объявлены ранее.


Вы здесь » Форум картографов, карты MapInfo, Google maps » MapBasic » Земная проекция