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

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
Витя С.



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

СообщениеДобавлено: Вс Дек 06, 2009 12:52 am    Заголовок сообщения: Автоматическое размещение точек на карте. Добавить ответ со ссылкой на данный текст

Здравствуйте.
Таблица. Последние 2 столбца в ней - координаты Х,У.
Нужно автоматически нанести эти точки на карту.
Пока получается только сделать таблицу mappable:
Create Map For Выборка_по_ингредиенту CoordSys Earth Projection 1, 0
затем открыть как надо таблицы и из программы вызвать
Run Menu Command M_TABLE_CREATE_POINTS
там вручную указать, откуда брать координаты и нажать ОК.
Тогда отображается нормально.
Как в программе указать, из каких столбцов брать координаты и сразу наносить их на карту?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
X-Ray



Зарегистрирован: 04.12.2009
Сообщения: 38
Откуда: Казань

СообщениеДобавлено: Вс Дек 06, 2009 1:45 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Update table Set obj = CreatePoint(Xcolumn, Ycolumn)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Витя С.



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

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

Спасибо огромное!
Зашел в ReferenceGuide почитать про CreatePoint, чтобы поменять значок и размер.
Как я понял, для этого служит оператор Symbol.
Но я так и не понял, куда его засунуть:
Create Map For Выборка_по_ингредиенту CoordSys Earth Projection 1, 0
Update Выборка_по_ингредиенту Set obj = CreatePoint(X_KOORD, Y_KOORD)
?
Заранее спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
X-Ray



Зарегистрирован: 04.12.2009
Сообщения: 38
Откуда: Казань

СообщениеДобавлено: Вс Дек 13, 2009 1:12 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Create Point ( x , y ) Symbol ( shape, color, size )

shape – число, задающее номер символа;
color – целочисленный код цвета;
size – размер.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Витя С.



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

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

Create Map For Выборка_по_ингредиенту CoordSys Earth Projection 1, 0
Create Point (X_KOORD, Y_KOORD) Symbol (54, 255, 24)

Компилируется нормально, при вызове показывает

---------------------------
MapInfo
---------------------------
(workingwithmap3.mb:8Cool На Карте нет изменяемых слоев для создания объектов,
или изменяемый слой невидим.
---------------------------
ОК
---------------------------

Я так понял, у меня не указано, что точки нужно создать в таблице Выборка_по_ингредиенту.
Где косяк?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
reasonat



Зарегистрирован: 01.07.2009
Сообщения: 224
Откуда: Екатеринбург

СообщениеДобавлено: Пн Дек 14, 2009 10:37 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

перед этим установить редактируемый слой
Set Map
Layer Выборка_по_ингредиенту
Editable On
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Витя С.



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

СообщениеДобавлено: Чт Дек 17, 2009 10:39 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Create Map For Выборка_по_ингредиенту CoordSys Earth Projection 1, 0
Set Map
Layer Выборка_по_ингредиенту
Editable On
Create Point (X_KOORD, Y_KOORD) Symbol (54, 255, 24)
Update Выборка_по_ингредиенту Set obj = CreatePoint(X_KOORD, Y_KOORD)
Commit Table Выборка_по_ингредиенту Interactive
Close Table Выборка_по_ингредиенту Interactive
Open Table "C:\Documents and Settings\Администратор\Мои документы\Выборка_по_ингредиенту.TAB" Interactive
Add Map Auto Layer Выборка_по_ингредиенту
set map redraw off
Set Map Layer 1 Editable On Label Auto On
Set Map Layer 1 Label Font ("Times New Roman",1,12,16728064) With Среднее+Chr$(13)+MIN_DT+Chr$(13)+MAX_DT Auto Retry On
set map redraw on

---------------------------
MapInfo
---------------------------
(workingwithmap3.mb:90) Слой предназначен только для чтения и не может быть изменен.
---------------------------
ОК
---------------------------


Также пробовал то что вы написали вставлять перед
Create Map For Выборка_по_ингредиенту CoordSys Earth Projection 1, 0
То же самое.
Если имеет значение - слой, на который наносятся точки называется Карта.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_Y



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

СообщениеДобавлено: Пт Дек 18, 2009 5:27 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

В вашем примере вы делаете кучу лишних операций, непонятно зачем.
Вы опишите что хотите сделать. Почему бы не сделать проще?

Dim cSym As Symbol
cSym = CurrentSymbol()
Set Style Symbol Symbol (54, 255, 24)
Update Выборка_по_ингредиенту Set obj = CreatePoint(X_KOORD, Y_KOORD)
Set Style Symbol cSym
UnDim cSym
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Витя С.



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

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

Лишние операции я делаю, потому что без них программа не работает. Например, если после запроса не сохранить таблицу, закрыть, а потом опять открыть (процедура points) - без этого таблицу не получалось сделать mappable. Уверен, можно обойтись без этого, но я пока начинающий в этой области.
Задача - нанести точки на карту. Вся информация в одной таблице - Выборка_по_ингредиенту.
В представленном мной примере все, как ни странно работает, не получается одно - прописать в программе нужный значок.
Пробовал использовать ваш код - пишет что в строке
Set Style Symbol Symbol (54, 255, 24)
unrecognised (
Может, я не туда кад вставил - не знаю. Пробовал менять строки местами.
Если есть возможность посмотреть - программу выложил сюда:
http://drop.io/ryx35pg (4КБ, без ожидания)
Буду очень благодарен за помощь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alex_Y



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

СообщениеДобавлено: Вс Дек 20, 2009 5:51 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

в моем примере в строке
Set Style Symbol Symbol (54, 255, 24)
по запарке слово Symbol два раза написал :)
вот так должно быть
Set Style Symbol (54, 255, 24)
либо
Set Style Symbol MakeSymbol(54, 255, 24)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alex_Y



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

СообщениеДобавлено: Вс Дек 20, 2009 6:37 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

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

Про лишние операторы в вашем коде:

Commit Table Выборка_по_ингредиенту As "C:\Documents and Settings\Администратор\Мои документы\Выборка_по_ингредиенту.TAB" TYPE NATIVE Charset "WindowsCyrillic" Interactive

' Не нужна, т.к. commit не открывает таблицу, а только сохраняет ее. Либо это нужно делать перед ее сохнанением, иначе может получиться конфликт
' Close Table Выборка_по_ингредиенту Interactive

Open Table "C:\Documents and Settings\Администратор\Мои документы\Выборка_по_ингредиенту.TAB" Interactive
Create Map For Выборка_по_ингредиенту CoordSys Earth Projection 1, 0

Update Выборка_по_ингредиенту Set obj = CreatePoint(X_KOORD, Y_KOORD)
Commit Table Выборка_по_ингредиенту Interactive

' Эт вообще бред (без обид), никому не нужный, таблицу вы уже открыти, изменения следали, повторно то открывать зачем?
' Close Table Выборка_по_ингредиенту Interactive
' Open Table "C:\Documents and Settings\Администратор\Мои документы\Выборка_по_ингредиенту.TAB" Interactive

Add Map Auto Layer Выборка_по_ингредиенту

' Эти комманды я бы вам тут использовать не реккомендовал, т.к. если возникнет ошибка, будут проблемы с отображением графики в этом окне
' set map redraw off
' set map redraw on

' Зачем вы делаете эту таблицу редактируемой, планируете в ней что-то менять? И эти комманды можно объединить в один Set Map.
Set Map Layer 1 Editable On Label Auto On
Set Map Layer 1 Label Font ("Times New Roman",1,12,16728064) With Среднее+Chr$(13)+Начало_отбора+Chr$(13)+Конец_отбора Auto Retry On

' Тут у вас Interactive будет просить у пользователя сохранить таблицу, если были изменения. Зачем это вам, это же временная таблица?
Close Table TemporaryQuery Interactive

Это коротко, есть тут еще куча моментов, к которым можно придраться, но эт позже, сначала основы понимания :)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

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


Top.Mail.Ru