Дмитрий, простите, все равно не могу разобраться. Вы на этот запрос:[CODE]SEL ECT [Atlas Zaventem].Sys, [Flanders OSM polygons].Sys, [Flanders OSM polygons].[AREA_INT] FR OM [Atlas Zaventem], [Flanders OSM polygons] WHERE [Atlas Zaventem].typeid=3 AND [Atlas Zaventem].Geometry.STWithin([Flanders OSM polygons].Geometry) [/CODE]получаете заполненное множество, а я пустое. Поэтому в поля пишутся пустые значения. Но когда проверяю эти же sys вручную, там данные есть: [URL=https://ibb.co/CttC0Vp]https://ibb.co/CttC0Vp[/URL] Что я делаю не так? Может какие-то ограничения по количеству объектов, потому что для sys = 244 запрос отработал. Мы не могли что-то изменить в настройках, когда разбирались с касанием геометрии? Потому что несколько месяцев назад этот запрос исправно переносил данные из слоя в слой. Я помню, мы снимали ограничение на время выполнения запроса, не могло повлиять это или что-то еще?
Простите, видимо, сделал что-то не то, когда копировал или упаковывал слой. Пересохранил еще раз, посмотрите, пожалуйста: [URL=https://drive.google.com/file/d/1VFCwaZ4amto8_Pi6lNzy0NF1uYkKPapp/view?usp=share_link]https://drive.google.com/file/d/1VFCwaZ4amto8_Pi6lNzy0NF1uYkKPapp/view?usp=share_link[/URL] Данные точно есть, на скриншоте ([URL=https://ibb.co/yY3qZmj]https://ibb.co/yY3qZmj[/URL]) видно.
На[CODE]SEL ECT [Atlas Zaventem].Sys, [Flanders OSM polygons].Sys, [Flanders OSM polygons].[AREA_INT] FR OM [Atlas Zaventem], [Flanders OSM polygons] WHERE [Atlas Zaventem].typeid=3 AND [Atlas Zaventem].Geometry.STWithin([Flanders OSM polygons].Geometry)[/CODE] ответ, что пересечений нет (пустое множество)
Дмитрий, добрый день. Простите, area написал уже от безысходности. Не работает ни с Adres, ни с Nizt, ни с одним другим полем. Точнее работает, пишет Ок (время), но данные не появляются[CODE]UPD ATE [Atlas Zaventem] SE T [Atlas Zaventem].[Adres] = [Flanders OSM polygons].[AREA_INT] WHERE [Atlas Zaventem].typeid=3 AND [Atlas Zaventem].Geometry.STWithin([Flanders OSM polygons].Geometry)[/CODE]
Здравсввуйте. Посмотрите, пожалуйста, почему запрос перестал рабоатть для копирования данных:[CODE]UPD ATE [Atlas Zaventem] SE T [Atlas Zaventem].[area] = [Flanders OSM polygons].[AREA_INT] WHERE [Atlas Zaventem].typeid=3 AND [Atlas Zaventem].Geometry.STWithin([Flanders OSM polygons].Geometry)[/CODE] Слои приложил: [URL=https://drive.google.com/file/d/1Xbu3qDodrXdUFz-V1L7btCGGHmi4u8Sm/view?usp=share_link]https://drive.google.com/file/d/1Xbu3qDodrXdUFz-V1L7btCGGHmi4u8Sm/view?usp=share_link[/URL] [URL=https://drive.google.com/file/d/1_EHnKU17YJJEriMPRIPKdx5ShHWuwZYI/view?usp=share_link]https://drive.google.com/file/d/1_EHnKU17YJJEriMPRIPKdx5ShHWuwZYI/view?usp=share_link[/URL]
А Upd ate нет: [URL=https://ibb.co/71FkB9v]https://ibb.co/71FkB9v[/URL] [CODE]SET TIMEOUT INFINITE; UPDATE [Flanders OSM polygons] SE T [Flanders OSM polygons].[SEC] =[QGIS Flanders_v2 all wo BLDGUSE].[SEC] WHERE [Flanders OSM polygons].Geometry.Intersects([QGIS Flanders_v2 all wo BLDGUSE].Geometry) AND [Flanders OSM polygons].Geometry.Selected()=1[/CODE]В чем причина? Неправильно формулирую запрос?
Выдает пустые поля: [URL=https://ibb.co/GcLcqsj]https://ibb.co/GcLcqsj[/URL] Может не STTouches надо использовать? Объекты здания (полигоны?): в двух разных слоя, где-то совпадают, где-то просто касаются
Алексей, здравствуйте. Спасибо. Запрос стал завершаться, но не копирует значения из одного слоя в другой: [URL=https://ibb.co/BLm1hfJ]https://ibb.co/BLm1hfJ[/URL] В чем причина? Кроме того, для двух выделенных зданий выполнение занимает 285 с. Что-то можете посоветовать, чтобы работать с большим количеством объектом за приемлемое время? [CODE]SET TIMEOUT INFINITE; UPD ATE [Flanders OSM polygons] SE T [Flanders OSM polygons].[PROD_CONS] = [QGIS Flanders_v2 all wo BLDGUSE].[PROD_CONS] WHERE [Flanders OSM polygons].Geometry.STTouches([QGIS Flanders_v2 all wo BLDGUSE].Geometry) AND [Flanders OSM polygons].Geometry.Selected()=1[/CODE]
Здравствуйте. Пытаюсь перенести данные из слоя QGIS Flanders_v2 all wo BLDGUSE в слой Flanders OSM polygons по признаку касания геометрии STTouches (SQL)[CODE]UPD ATE [Flanders OSM polygons] SE T [Flanders OSM polygons].[SEC] = [QGIS Flanders_v2 all wo BLDGUSE].[SEC] WHERE [Flanders OSM polygons].Geometry.STTouches([QGIS Flanders_v2 all wo BLDGUSE].Geometry) AND [Flanders OSM polygons].Geometry.Selected()=1[/CODE]Даже когда добавил последнюю строчку и выделил два объекта в слое Flanders OSM polygons все равно ошибка: Query has been timed out. Что я делаю не так?
Bing подключил обращением к тайловому серверу Политерм и пересохранением файла на жесткий диск. Временное решение есть, теперь смущает актуальность снимков. Завтра буду сравнивать с ArcGIS, спасибо.
Алексей, здравствуйте. Спасибо. 1. Где то можно найти новые варианты ссылки или любую другую информацию про подключение тайловых слоев? Принципиальная задача - подключить любой спутниковый слой, источник пока не важен. Или идти в SasPlanet? Больше ни одного онлайн сервера достпуного нет? 2. Версия 10.0.0.8286u.x64 После нажатия Ок - вылет: https://ibb.co/3TJZcym
Простите за дурацкий вопрос, ни разу сам не обновлял Zulu. Вот это файл обновления: https://www.politerm.com/download/?dl=zulu2021msi_x64 ? Что означает: "ВАЖНО! Данный пакет установки не является обновлением для ZuluGIS 8.0."?
Вы имеете в виду[CODE]Set Ptlocal = El.CalcDistance(Element(ID линии координатной оси), 0)[/CODE]? Как это написать[CODE]Ptlocalattributes = Element(ID линии координатной оси), 0 'По всем объектам слоя For i = 1 To Keys.Count Set El = L.Elements.getElement(Keys.Item(i)) 'Если объект примитив If El.TypeID = 3 Then 'Получаем расстояние до линии координатной оси Set Ptlocal = El.CalcDistance(Keys.Item(i), ???Ptlocalattributes???)[/CODE]?
Алексей, спасибо. [CODE]Sub gure 'Пример записи географических координат центра объекта в таблицу 'Текущая активная карта Set Doc = Zulu.ActiveMapDoc 'Активный слой текущей карты Set L = Doc.Layers.Active Set Db = CreateObject("zb.database") 'Проекция слоя Set CRS1 = L.GetCrs() 'Создание проекция WGS84 Set CRS_WGS84 = CreateObject("zululib.CRS") CRS_WGS84.InitByCode("EPSG:4326") 'Открыли базу данных для типа 3 Db.Open L.ObjectTypes.Item(3).BaseName 'Список ключей объектов слоя Set Keys = L.ElementKeys 'По всем объектам слоя For i = 1 To Keys.Count Set El = L.Elements.getElement(Keys.Item(i)) 'MsgBox "L.Elements.getElement(Keys.Item(i)) = " & L.Elements.getElement(Keys.Item(i)) 'Если объект примитив If El.TypeID = 3 Then 'Получаем точку центра объекта в координатах проекции слоя Set Pt = El.GetCenter() 'Получаем широту и долготу точки в WGS84 Set Pt = CRS1.GetConvertPoint(Pt.X, Pt.Y, CRS_WGS84) 'MsgBox "CRS1.GetConvertPoint(Pt.X, Pt.Y, CRS_WGS84) = " & CStr(Pt.X) If pt.IsValid = False Then MsgBox "Ошибка преобразования" End If 'Записываем широту и долготу в соответствующие поля ("X" и "Y") Db.UpdateBaseRecord Keys.Item(i), "x" + CHR(10) + "y", CStr(Pt.X) + CHR(10) + CStr(Pt.Y), 0 End If Next MsgBox "Обновлено записей" End Sub[/CODE]Код работает. Имел в виду чтение координат с локальной системы в метрах, отрисованной самостоятельно или с помощью стандартных инструментов: [URL=https://ibb.co/wpRjGjK]https://ibb.co/wpRjGjK[/URL] [URL=https://ibb.co/HxKvCHb]https://ibb.co/HxKvCHb[/URL]
Здравствуйте. 1. Пытаюсь адапртировать пример с сайта. Не работает, проблема в записи в БД. Сами координаты читает, проверил через MsgBox. Пытаюсь писать в таблицу Потребитель, которая выглядит вот так (см. картинку). x, y - тип Вещественное 2. Где найти список типов ZuluThermo? То, что 3 - это потребитель - пришлось искать в примерах. 3. Возможно ли чтение координат в метрах с локальной сетки? [URL=https://ibb.co/nkJB73P]https://ibb.co/nkJB73P[/URL] [URL=https://ibb.co/yXd6XYR]https://ibb.co/yXd6XYR[/URL] [CODE]Sub gure 'Пример записи географических координат центра объекта в таблицу 'Текущая активная карта Set Doc = Zulu.ActiveMapDoc 'Активный слой текущей карты Set L = Doc.Layers.Active Set Db = CreateObject("zb.database") 'Проекция слоя Set CRS1 = L.GetCrs() 'Создание проекция WGS84 Set CRS_WGS84 = CreateObject("zululib.CRS") CRS_WGS84.InitByCode("EPSG:4326") 'Открыли базу данных для типа -1 (примитивы) Db.Open L.BaseName 'Список ключей объектов слоя Set Keys = L.ElementKeys 'По всем объектам слоя For i = 1 To Keys.Count Set El = L.Elements.getElement(Keys.Item(i)) 'MsgBox "L.Elements.getElement(Keys.Item(i)) = " & L.Elements.getElement(Keys.Item(i)) 'Если объект примитив If El.TypeID = 3 Then 'Получаем точку центра объекта в координатах проекции слоя Set Pt = El.GetCenter() 'MsgBox "El.GetCenter(5) = " & El.GetCenter(5) 'Получаем широту и долготу точки в WGS84 Set Pt = CRS1.GetConvertPoint(Pt.X, Pt.Y, CRS_WGS84) MsgBox "CRS1.GetConvertPoint(Pt.X, Pt.Y, CRS_WGS84) = " & CStr(Pt.X) If pt.IsValid = False Then MsgBox "Ошибка преобразования" End If 'Записываем широту и долготу в соответствующие поля ("X" и "Y") Db.UpdateBaseRecord Keys.Item(i), "x" + CHR(10) + "y", CStr(Pt.X) + CHR(10) + CStr(Pt.Y), 0 Db.UpdateBaseRecord Keys.Item(i), "x", CStr(Pt.X), 0 Db.UpdateBaseRecord Keys.Item(i), "y", CStr(Pt.Y), 0 'MsgBox "Обновлено " & PT & "записей" End If Next MsgBox "Обновлено записей" End Sub[/CODE]