 |
www.integro.ru ЦСИ ИНТЕГРО
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Динар
Зарегистрирован: 28.06.2009 Сообщения: 6
|
Добавлено: Пт 10 Июл 2009 13:44 Заголовок сообщения: Линейные операции |
|
|
Существует несколько линейных объектов с одинаковым параметром ( скажем объекты: улица, параметр: название улицы). Необходимо их все объеденить в один объект. Попробовал написать скрипт, который копирует вершины линейных объектов и записывает их в первый объект,в итоге получился единый объект с ребрами между двумя объектами, то есть вершины из разный объектов соединились ребром. А необходимо их просто объединить. Как можно удалить ребра? Или как можно реализовать по другому? =)
Код: | option explicit
sub line
application.selection.deselectall
dim MapObjects, wera, adress, i, shape, part, mapobject, x, y, c, j, n1, style, n
set MapObjects = Application.ActiveDb.MapObjects
set style = MapObjects.QueryByLayers("0001000003F7")
do while not style.EOF
set wera = MapObjects.GetObject(style.objectid)
adress = wera.SemData.GetValue("Деревушка", "Адрес", 0)
if (adress = "ул.Горького") then
application.selection.select style.objectid,0
end if
style.MoveNext
loop
n = application.selection.ids (0)
for i=1 to application.selection.count-1
n1 = application.selection.ids (i)
set mapobject = mapobjects.getobject(n1)
for each shape in mapobject.shapes
for each part in shape.contour
for j=0 to mapobject.shapes.item(0).contour.item(0).vertexcount-1
mapobject.shapes.item(0).contour.item(0).sgetvertex j, x, y, c
MapObjects.GetObject(n).shapes.item(0).contour.item(0).insertvertex j,x,y,c
next
next
next
next
MapObjects.UpdateChanges
end sub |
|
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Вс 12 Июл 2009 13:35 Заголовок сообщения: |
|
|
Добавляйте в пополняемый объект новые контуры, и используйте для данных контуров функцию addPartsFrom. См. справку, там эта функция есть. |
|
Вернуться к началу |
|
 |
Динар
Зарегистрирован: 28.06.2009 Сообщения: 6
|
Добавлено: Пн 13 Июл 2009 01:30 Заголовок сообщения: |
|
|
Алексей В. Бастриков писал(а): | Добавляйте в пополняемый объект новые контуры, и используйте для данных контуров функцию addPartsFrom. См. справку, там эта функция есть. |
огромное спасибо, Алексей. все заработало =) |
|
Вернуться к началу |
|
 |
Динар
Зарегистрирован: 28.06.2009 Сообщения: 6
|
Добавлено: Чт 16 Июл 2009 01:13 Заголовок сообщения: |
|
|
еще вопрос: как из существующей таблицы легче всего выбрать одинаковые и непустые значения полей одного поля? |
|
Вернуться к началу |
|
 |
Динар
Зарегистрирован: 28.06.2009 Сообщения: 6
|
Добавлено: Пт 17 Июл 2009 01:29 Заголовок сообщения: |
|
|
посоветовали использовать sql запросы, но пока не могу разобраться, может подскажете кто знает?
задача стоит следующая: нужно объеденить объекты у которых совпадают значения в определенном поле семантической таблицы. |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Пн 20 Июл 2009 20:27 Заголовок сообщения: |
|
|
Что касается sql, можно поступить так:
set DataSet = SemTable.SemDbTable.SelectData("ID", "Поле='" & Значение & "'", null)
while not DataSet.EOF
ObjectID = DataSet.Fields.Item("ID").Value
DataSet.MoveNext
wend
При объединении объектов нужно учитывать стили их форм, а также то, что они могут принадлежать разным слоям, тогда будет посложнее...
Читайте внимательно справку  |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
|
|