Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Витя С.
Зарегистрирован: 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:8 На Карте нет изменяемых слоев для создания объектов,
или изменяемый слой невидим.
---------------------------
ОК
---------------------------
Я так понял, у меня не указано, что точки нужно создать в таблице Выборка_по_ингредиенту.
Где косяк? |
|
Вернуться к началу |
|
|
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 |
|
Вернуться к началу |
|
|
Витя С.
Зарегистрирован: 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) |
|
Вернуться к началу |
|
|
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
Это коротко, есть тут еще куча моментов, к которым можно придраться, но эт позже, сначала основы понимания :) |
|
Вернуться к началу |
|
|
|