RUS  ENG 

Вопрос по рельефу

Страницы: 1
RSS
Вопрос по рельефу
 
Столкнулись с проблемой при создании рельефа. Рельеф создается, создаются изолинии, но при открытом слое рельефа невозможно редактирование, т.е. добавляю объект и разрывается соединение, и, самое главное, как произвести считывание с рельефа геодезии? При нажатии "Отметка высот с карты" считывания не происходит. Что нужно для корректной работы этого модуля?
 
Спасибо. Погоняем программу. Через сервер при работе с рельефом возможны недоделки. Сообщите,пожалуйста свой e-mail и телефон на [email protected] для оперативной отладки.
 
Все исправили.
 

День добрый!

Решил не начинать новый топик, задам вопрос здесь.

Итак, есть слой рельефа, построенный по данным двух других слоёв: высотных отметок и горизонталей. Есть слой потребителей. В базе данных потребителей есть поле H, в него требуется занести значение со слоя рельефа (как это делается для объектов сети водопровода, например).

Вопрос: как правильно это сделать?

Ниже цитирую попытки моего коллеги, которые к успеху не привели.

Цитата

На карте «Мозырь» построен рельеф на слое «Рельеф по отметкам» в локальной системе координат

На слое «Consumer» построены объекты с ID 1,2,3,4,5,6,7,8,9,10,11,12,14. К объектам присоединена таблица Consumer (база данных SQlite) в которой имеется поле Н.

Нам хотелось бы создать макрос переноса данных с рельефа в поле Н объектов Consumer.

В примерах написания макросов имеется похожая для нас ситуация:

'*********************************************************************

' Заполняем высотными отметками поле Z2 для слоя текущей карты Zulu

'*********************************************************************

Sub FillZSQL

'Текущая карта «Мозырь»

Set map = Zulu.ActiveMapDoc

'Активный слой текущей карты «Consumer»

Set L = map.Layers.Active

'SQL запрос нa запись высотных отметок для каждого объекта слоя в таблицу

map.ExecSQL "UPDATE [" + L.UserName + "] Set [" + L.UserName + "].Z2 = [" + L.UserName + "].Geometry.Z()", Nothing

End Sub

map.ExecSQL "UPDATE [" + L.UserName + "] Set [" + L.UserName + "].Z2 = [" + L.UserName + "].Geometry.Z()", Nothing

Как правильно записать данную строку?

 
Цитата
Don_Quixote написал:
Цитата
Как правильно записать данную строку?
Добрый день. Можно тут посмотреть. Там и ролик и макрос. И все работало на момент написания страницы.
https://www.politerm.com/videos/macros/makrosy-urok-5-sloi-relefa-srtm-i-tin-chitaem-vysotnye-otmetki/
 
Алексей, спасибо за ссылку.
Попробую сформулировать вопрос проще (макросами никогда не баловались, нужны ли они в нашем случае - вызывает вопрос).
Итак, исходные данные:
1. Слой рельефа, построенный по данным высотных точек и горизонталей (TIN).
2. Слой с потребителями (точечные объекты), к которым присоединена база данных, в ней есть поле высотной отметки данного потребителя.
Требуется:
1. Перенести для данной точки местности высотную отметку (значение) со слоя рельефа в данные потребителя.
Действие разовое, поэтому городить макросы не считаю необходимым. Вероятно, достаточно будет правильно сформировать SQL. Но как?
 
Цитата

1. Перенести для данной точки местности высотную отметку (значение) со слоя рельефа в данные потребителя.
Действие разовое, поэтому городить макросы не считаю необходимым. Вероятно, достаточно будет правильно сформировать SQL. Но как?
Пример для окна SQL:

UPDATE [voda] Set [voda].[H_geo] = [voda].Geometry.Z()

Все.
Если в текущей карте есть слой рельефа, если слой для записи и слой рельефа либо локальные либо с одного сервера, и у них заданы проекции, либо оба план-схемы, то запишет.
 
Алексей, спасибо за код, но не сработало :(
Простите уж за назойливость, но давайте уточним, что не так:
UPD ATE [voda] Set [voda].[H_geo] = [voda].Geometry.Z()
это, я так понимаю, имя таблицы потребителей (куда будут записываться данные), в нашем случае consumer
UPDATE [voda] Set [voda].[H_geo] = [voda].Geometry.Z()
это поле в таблице, куда будет записываться значение, в нашем случае H
UPDATE [voda] Set [voda].[H_geo] = [voda].Geometry.Z()
Это откуда брать значение для записи. Ошибочно указан слой voda, должен быть слой рельефа.
Я прав?
Как правильно записать в SQL имя слоя рельефа, если он имеет пробелы, его имя Рельеф по отметкам.
 
Цитата
Don_Quixote написал:
Алексей, спасибо за код, но не сработало
Простите уж за назойливость, но давайте уточним, что не так:
UPD ATE [voda] Set [voda].[H_geo] = [voda].Geometry.Z()
это, я так понимаю, имя таблицы потребителей (куда будут записываться данные), в нашем случае consumer
UPDATE [voda] Set [voda].[H_geo] = [voda].Geometry.Z()
это поле в таблице, куда будет записываться значение, в нашем случае H
UPDATE [voda] Set [voda].[H_geo] = [voda].Geometry.Z()
Это откуда брать значение для записи. Ошибочно указан слой voda, должен быть слой рельефа.
Я прав?
Как правильно записать в SQL имя слоя рельефа, если он имеет пробелы, его имя Рельеф по отметкам.
Это запрос из окна запросов "Карта\Запрос\SQL запрос" Там запрос к слою карты в которой еще и слой рельефа есть. Таблиц там нет. Запросы к таблицам конкретной базы ни про какой рельеф не знают.
В тексте запроса нет слоя рельефа. Он должен просто в карте присутствовать. А в тексте запроса слой, для записи
 
Цитата

Как правильно записать в SQL имя слоя рельефа, если он имеет пробелы, его имя Рельеф по отметкам.
И еще раз. Смотрите ролик с 11:09 Там все это показано (https://youtu.be/tR1zbed7ni4)
Изменено: Алексей Аширов - 24.04.2020 13:24:44
 
Увы - смотрел, и не раз, но так ничего не добился. Значения ну никак не переносятся...
Алексей, давайте копнём глубже :)
В слое есть несколько _типов потребителей_, у всех у них одна база данных.
Может наличие типов имеет влияние?...
 
Цитата
Don_Quixote написал:
Увы - смотрел, и не раз, но так ничего не добился. Значения ну никак не переносятся...
Алексей, давайте копнём глубже
В слое есть несколько _типов потребителей_, у всех у них одна база данных.
Может наличие типов имеет влияние?...
Свяжитесь любым способом со мной и через TeamViewer посмотрим.
Страницы: 1