Невозможно открыть файл содержащий пространственные данные
Проблемы с картами могут возникнуть при добавлении карты или слоя карты в отчет с разбивкой на страницы, при настройке существующей карты или слоя карты в отчете, при предварительном просмотре карты в отчете или при публикации отчета с картой. Этот раздел помогает устранять эти проблемы.
6. Примеры вычислений с помощью PostGIS
Большинство стандартных задач ГИС-анализа можно решить с использованием пространственных баз данных. Рассмотрим несколько примеров использования PostGIS на примере имеющейся у нас пространственной таблицы bnd-political-boundary-a. Поскольку геометрические данные этой таблицы выражены в десятичных градусах, то практической значимости рассчитанные величины иметь не будут, однако нам этого и не нужно.
Вычисление периметра Алтайского края
SELECT ST_Perimeter(the_geom) AS perimeters
FROM "bnd-political-boundary-a"
WHERE nam = 'ALTAYSKIY KRAY';
В результате выполнения этого запроса будет рассчитан периметр Алтайского края (30.9082067657417).
Вычисление площади РФ
В результате выполнения этого запроса будет рассчитана площадь РФ (2925.11361671992).
Написали в техподдержку ФГИС ТП и выслали GML файлы. После проверки файлов прислали ответ "Пересохраните файлы в GML версии 3 и повторите загрузку" Как это сделать?
Цитата |
---|
Евгений Соколов написал: Написали в техподдержку ФГИС ТП и выслали GML файлы. После проверки файлов прислали ответ "Пересохраните файлы в GML версии 3 и повторите загрузку" Как это сделать? |
Обращаем Ваше внимание, что с 20.04.2020 выполняется проверка векторных данных на соответствие Приказу Минэкономразвития России от 09.01.2018 № 10. На текущий момент система также проверяет векторные файлы, подготовляемые в форматах, которые не подразумевают использование xsd схем.
Получено 0 записей.
Загружено 0 записей.
Невозможно открыть файл, содержащий пространственные данные. null
Выгружали из Панорама-редактор + комплекс градостроительных задач 13.6.9
Цитата |
---|
Роман Феллер написал: Добрый день! при выгрузке во ФГИС ТП выдает ошибку Материалы по обоснованию в виде карт.gml |
Цитата |
---|
Роман Феллер написал: Добрый день! при выгрузке во ФГИС ТП выдает ошибку Материалы по обоснованию в виде карт.gml |
Цитата |
---|
Роман Феллер написал: Добрый день! при выгрузке во ФГИС ТП выдает ошибку Материалы по обоснованию в виде карт.gml Результат проверки Идентификатор объекта Получено 0 записей. Загружено 0 записей. Невозможно открыть файл, содержащий пространственные данные. null Выгружали из Панорама-редактор + комплекс градостроительных задач 13.6.9 классификатор terrplan.v5. |
Мы внесли изменения в программу в отношении описания геометрии объектов.
Программа доступна в разделе скачать (версия 13.6.9.30) - https://gisinfo.ru/download/download.htm
Важно.
Также рекомендуем обратить внимание на заполнение семантических характеристик, а именно на использование разделителя в целой и дробной части. Необходимо использовать точку "."
Использование разделителя "," приводит к невозможности открытия файла на портале ФГИС ТП. В описании ошибки будет представлен текст " В файле отсутствует поле "Геометрия", либо описание геометрии (теги) указано с ошибками"
К примеру,
Для семантики №1025 "Напряжение, кВ" (ключ VOLTAGE) значение "0,4" является ошибочным. Необходимо заносить в семантику " 0.4 "
Добрый вечер. При загрузке проекта в ФГИС ТП, подготовленного в 14 панораме (крайний релиз программы), карт в формате GML сформированных через модуль "градостроительных задач" система ФГИС ТП выдает единственную ошибку по всем картам проекта: местоположение объекта выходит за границы РФ . При анализе ошибок по идентификатору объектов, никаких пересечений не выявлено. При проверке карт через Qgis, также никаких проблем (всё в своей системе координат EPSG 3857 - WGS 84 Pseudo-Mercator, никаких пересечений визуально нет, местоположение объекта территориально все на своем месте). Неоднократные обращения в тех.поддержку ФГИС ТП ни к чему не приводят, по существу тех.поддержка не отвечает как устранить данную ошибку (отписки, по типу данная ошибка является не критичной и не препятствует загрузке проекта / . после устранения данной ошибки можно будет перейти к следующему шагу загрузки документа и так далее). Может быть кто то сталкивался в последнее время с данной ошибкой и есть какое то простое решение данной проблемы?
СУБД MS SQL Server начиная с версии 2008 поддерживает работу с пространственными данными (spatial data), которые реализованы как пользовательские типы данных (UDT-types). MS SQL Server поддерживает 2 вида пространственных данных:
- geometry - представляет данные в евклидовой (плоской) системе координат.
- geography - представляет данные в геодезической (географической) системе координат.
Поддержка вышеуказанной СУБД пространственных данных открывает много полезных возможностей при разработке сайтов и других ГИС-приложений, взаимодействующих с картографической информацией: можно хранить данные в одном месте (централизовано), пользуясь преимуществами единой резервной копии и не беспокоясь за рассогласованность данных; получить все преимущества транзакций при извлечении и обновлении данных; создавать пространственные индексы для ускорения поиска, использовать удобство языка запросов SQL при манипуляции с данными и т.д.
Как вам, вероятно, известно MS SQL Server 2008 (или более поздние версии с уровнем совместимости 100 и ниже) накладывает некоторые ограничения на использование типа geography (взято из MSDN):
- Любой экземпляр geography должен лежать в пределах одного полушария. И, как следствие, не допускается сохранение пространственных объектов больше размера полушария.
- Любой экземпляр geography в представлении консорциума OGC Well-Known Text (WKT) или Well-Known Binary (WKB), порождающий объект больше полушария, приводит к возникновению исключения ArgumentException.
- Методы типа данных geography, требующие указания двух экземпляров geography, такие как STIntersection(), STUnion(), STDifference() и STSymDifference(), возвратят NULL, если результаты методов не умещаются в одном полушарии. Метод STBuffer() также возвращает значение NULL, если выходные данные выходят за пределы одного полушария.
К счастью, в более поздних вресиях эти ограничения сняты и в моем случае использовался SQL Server 2012 Express Edition.
Получение пространственных данных из shape-файлов
Shape-файлы содержат геометрические и атрибутивные данные без сохранения информации о топологии. Этот формат хранения векторных данных (точек, линий, полигонов) был создан компанией ESRI для обмена информацией между своими программными продуктами, но приобрел широкую популярность и фактически является обменным форматом между различными геоинформационными системами (ГИС). Shape-файл состоит из:
- Основного файла (.shp), каждая запись которого описывает фигуру со списком вершин.
- Индексного файла (.shx) - каждая запись содержит смещение соответствующей записи основного файла от начала этого файла.
- Файла dBASE (.dbf), который содержит атрибутивную информацию. Записи в файле должны располагаться в таком же порядке, как и в основном файле.
Вполне разумным решением было предположить, что уже существуют готовые программы, которые позволяют загрузить информацию из shape-файлов в MS SQL. Самое первое решение, на которое я наткнулся, была утилита spape2sql .
Результат импорта утилиты spape2sql.
Невооруженным глазом заметно отсутствие ряда стран, в частности - России и Канады.
Я решил не заморачиваться с графическими интерфейсами и набросать простое консольное приложение, которое обозвал похожим образом - shape2mssql. Строка для запуска программы выглядит следующим образом:
- filename.shp - обязательный параметр: имя shape-файла (при этом файл должен быть в той же директории, что и программа) или путь к shape-файлу.
- srid - необязательный параметр: идентификатор пространственной ссылки. Если не указан, то принимается по умолчанию значение 4326 , что соответствует системе координат WGS84.
- keyColumnName - необязательный параметр: имя поля для первичного ключа. Если не указан, то принимается значение по умолчанию Id
Дополнительно в конфигурационном файле приложения shape2mssql.exe.config нужно указать строку подключения к БД, например, так:
Преобразование координат пространственных данных из shape-файла в объект типа SqlGeography (чтобы можно было работать с типом SqlGeography , нужно установить пакет Microsoft.SqlServer.Types (Spatial)) осуществляется c помощью класса SqlGeographyBuilder , который просто формирует нужные строки для создания геометрии, вызывая соответствующие методы STxxxFromText. Данный класс и реализация его публичных методов показана ниже:
Сам код достаточно прост, как хозяйственной мыло ) Класс SqlGeographyBuilder в аргументах своих публичных методов принимает класс shape2mssql.Entities.Point . Этот тип данных позволяет жестко не привязывать класс SqlGeographyBuilder к библиотеке Catfood.Shapefile, а именно к структуре Catfood.Shapefile.PointD. Поэтому, если подключить иную библиотеку доступа к shape-файлам, то этот класс изменять не придется, необходимо будет только написать свой метод для преобразования точек в тип shape2mssql.Entities.Point . Однако, вернемся к классу SqlGeographyBuilder . Единственный момент, на который стоит обратить внимание - это приватный метод getProperPolygon . Его код представлен ниже:
Необходимостью его создания послужила следующая формальность: как MS SQL Server трактует полигоны. Представим, что есть область пространства, ограниченная замкнутой линией. Какую область необходимо учитывать: та, которая содержится внутри замкнутой линии или же все окружающее пространство за исключением области, ограниченной полигоном? Для решения этой дилеммы воспользуемся эвристическим подходом, который заключается в том, что область с меньшей площадью скорей всего будет правильным выбором. Таким образом, для всех полигонов производим инвертирование, проверяем условие, что площадь инвертированного полигона меньше площади начального полигона. Если условие выполняется, то далее используем уже этот инвертированный полигон.
Класс SqlDataAccess содержит код доступа к MS SQL Server и выполняет вставку геоданных и сопутствующей атрибутивной информации в таблицу. Имя таблицы получается из имени shape-файла (без расширения .shp). При создании параметра для команды вставки необходимо определить тип параметра как Udt. Фрагмент кода показан ниже:
Ссылку на загрузку исходного кода вы можете найти в конце данной статьи. Ну и напоследок приведу несколько примеров пространственных данных, импортированных в базу данных из shape-файлов с различным типом геометрии. Первый файл TM_WORLD_BORDERS_SIMPL-0.3.shp содержит полигоны границ стран мира. Поскольку данные имеют систему координат WGS84, то последние два параметра можно не указывать. Для импорта выполним команду:
Получим всю выборку таким незамысловатым запросом:
И, перейдя на вкладку "Spatial results", увидим результаты в графическом представлении:
Загрузим немного линий, выполнив программу со следующими параметрами.
В данном случае система координат отличается от WGS84, поэтому добавим параметр srid, который равен 4269 - североамериканская система координат (NAD) 1983г. И результат:
Загрузим данные о наиболее посещаемых местах мира в виде точечных объектов.
Количество объектов в файле оказалось равным 7343, а окно отображения пространственных результатов осилило отрисовку только 5000, о чем мы и были проинформированы. Но, тем не менее, картина достаточно показательна:
Последний пример демонстрирует указание собственного названия ключевого поля, поскольку ключевое поле по умолчанию Id конфликтует с названием поля атрибутивной информации.
Получаем вот такую картину территориального делелния Замбии:
11.01.2017 Разбираемся с кодировкой (обновление)
В процессе импорта некоторых shape-файлов, атрибутивная информация которых содержит строки на русском языке, я обнаружил проблемы с кодировкой. Продемонстрирую данную проблему. Я нашел на просторах интернета и загрузил в свой MS SQL Server 2012 Express shape-файлы Белгородской области. Импорт прошел успешно, но в таблицах базы данных оказались строки такого вида:
В данном случае SourceEncoding - это cp866, а DestEncoding - это UTF-8. Чтобы учесть кодировку dbf-файла, в командную строку я добавил еще один опциональный параметр [encoding] . Теперь строка запуска программы с аргументами выглядит таким образом:
После импорта геоданных с указанием правильной кодировки с помощью команды:
мы получаем вот такую картину для атрибутов геоданных:
Дополнительные нововведения в программе
Помимо добавления еще одного аргумента, задающий кодировку файла, я вынес в файл конфигурации приложения значения параметров по умолчанию, т.е., если параметры командной строки [srid] Невозможно открыть файл содержащий пространственные данные [encoding] не указаны, то будут использоваться значения из файла конфигурации. Секция настроек выглядит таким образом:
- Srid - идентификатор пространственной ссылки по умолчанию.
- KeyFieldName - имя поля для первичного ключа по умолчанию.
- SourceEncoding - кодировка, в которой считываются атрибутивные строковые данные драйвером dbf-файла.
- DestEncoding - кодировка по умолчанию, в которую преобразуются строковая атрибутивная информация (если не указана, а также, если не указан соответствующий параметр командной строки, то перекодировка не происходит).
Еще одной новой фичей shape2mssql является пакетная загрузка shape-файлов в БД. Если теперь запустить программу без аргументов, то она ищет все shape-файлы в текущей директории и последовательно выполняет их обработку. Таким образом я загрузил в базу данных все геоданные из shape-файлов. С помощью запроса, приведенного ниже я сформировал демонстрационную выборку пространственных данных.
В результате получилась вот такая картина:
Последние изменения касаются вывода информации на консоль в процессе работы программы. Теперь количество обработанных объектов отображается на той же строке. (Вместо Console.WriteLine(". ") использую Console.Write("\r. ") с указанием управляющего символа возврата каретки).
Как уменьшить размер определения отчета?
Слой карты содержит элементы карты, созданные на основании пространственных данных. Иногда элементы карты внедрены в определение отчета. Это происходит следующим образом.
Если источником пространственных данных является карта из галереи карт или из файла фигуры ESRI на локальном компьютере, элементы карты автоматически внедряются в определение отчета.
Если отчет публикуется на сервере отчетов и существует ссылка источника пространственных данных на локальный файл, то к этим данным нельзя обратиться во время обработки отчета. Чтобы избежать этой проблемы, данные карты внедряются в определение отчета.
В мастере карты или мастере слоя, если выбрать внедрение пространственных данных, элементы карты, основанные на них, будут внедряться в слой карты в определении отчета.
На панели "Карта", если щелкнуть правой кнопкой слой, а затем выбрать один из параметров Внедрить пространственные данные , элементы карты, основанные на пространственных данных, будут внедрены в слой карты в определении отчета.
Чтобы удалить внедренные данные, основанные на файле фигуры ESRI, из определения отчета, сделайте следующее.
Передайте на сервер отчетов или опубликуйте SHP- и DBF-файлы ESRI.
В отчете, на панели «Карта» в режиме конструктора, выберите слой с внедренными данными и откройте Свойства слоя данных . В поле Использовать пространственные данные из выберите Связать с файлом фигуры ESRI, затем перейдите в папку на сервере отчетов, содержащую файлы фигур ESRI, выберите файл и нажмите кнопку «ОК».
Сохраните отчет. Измененные внедренные данные слоя были удалены из определения отчета.
Элементы карты из отчета в галерее карт всегда будут внедрены в слой карты.
Проблемы условных обозначений, цветовой шкалы и правил
Этот раздел используется, чтобы решить проблемы, связанные с правилами, условными обозначениями и параметрами цветовой шкалы.
Для слоя карты установлен фильтр, но он не действует.
Чтобы отфильтровать данные слоя, следует указать тип данных в критерии фильтра. Убедитесь, что был указан верный базовый тип данных, так что уравнение фильтра верно вычисляет заданное условие. Дополнительные сведения см. в разделе Примеры уравнений фильтра (построитель отчетов и службы SSRS).
Проблемы мозаичного слоя
Этот раздел используется, чтобы решить проблемы, связанные с параметрами фона мозаики.
4. Работа со слоями PostGIS в QGIS
Для просмотра данных PostGIS существует множество программ, одной из которых является QGIS. На примере QGIS мы и рассмотрим работу со слоями PostGIS. Запускаем QGIS и выбираем: «Layer/Add a PostGIS Layer». В открывшемся окне нажимаем кнопку «New» и задаем параметры нового соединения:
Name – имя сервера к которому устанавливается подключение, его можно посмотреть в браузере объектов pgAdmin. Если вы не меняли его, то по умолчанию используется имя PostgreSQL Database Server 8.3.
Host – адрес хоста на котором расположена база данных. Поскольку мы работаем с базой данных локально, то в этом поле указываем localhost.
Port – порт на котором расположен сервис PostgreSQL, по умолчанию 5432.
Username – имя пользователя базы данных, в нашем случае имя суперпользователя.
Password – пароль.
Закрываем это окно, а в окне «Create a New PostGIS connection» нажимаем «OK». Далее выбираем созданное подключение, жмем «Connect» и снова вводим пароль на подключение к базе данных, после чего появляется окно:
Выбираем слой (таблицу) bnd-political-boundary-a, жмем «Add» и выбранный слой будет загружен в окно QGIS. После чего с ним можно работать точно также, как и с обычным слоем, созданным из shape-файла.
Как управлять значениями в условных обозначениях карты?
Значения условных обозначений определяются автоматически на основании правил типа элемента карты, заданных для каждого слоя карты, и правил распределения, заданных для условных обозначений.
По умолчанию все элементы условных обозначений, созданные по правилам, появляются в первом обозначении. Значения для всех правил многоугольников, линий и точек для каждого слоя вносят свой вклад в объединенный диапазон условных обозначений. Чтобы отобразить элементы различных условных обозначений, следует сперва создать множественные условные обозначения и затем для каждого правила указать, в каких условных обозначениях отображать связанные элементы.
Чтобы связать правило с конкретными условными обозначениями, откройте свойства правила и на странице «Условные обозначения» укажите имя условных обозначений. Чтобы удалить элементы из условных обозначений, в параметрах условных обозначений выберите пустую строку в качестве имени условных обозначений. При переименовании элементов условных обозначений в отчете следует вручную назначить каждому слою соответствующий элемент условных обозначений.
Чтобы управлять заголовком и содержимым условных обозначений, используйте свойства условных обозначений для правила. Можно указать, сколько делений следует создать, изменить вычисления, назначающие значения каждому делению, задать максимальное и минимальное значения диапазона и изменить формат текста условных обозначений.
Цветовая шкала не появляется при запуске отчета.
Цветовая шкала содержит информацию для пользователя, в то время как слой карты задает цветовые правила для многоугольников, линий и точек слоя в целом или для внедренных элементов карты. Если ни один элемент карты не задает правило цвета или если правила цвета указаны с помощью условных обозначений вместо цветовой карты, то цветовая карта не появится в отчете, готовом для просмотра.
Чтобы отобразить цветовую шкалу, укажите правила цвета для слоя или внедренного элемента карты. Дополнительные сведения см. в разделе Изменение условных обозначений карты, цветовой шкалы и связанных правил (построитель отчетов и службы SSRS).
Произошла ошибка выражения, связанная с областью набора данных, при установке выражения в качестве метки или подсказки.
Если пространственные данные переданы из галереи данных или файла фигуры ESRI, то связанные данные не являются частью набора данных отчета. Нельзя использовать синтаксис выражений для ссылки на поле набора данных, чтобы установить эти данные в качестве метки или подсказки.
Использование связки PostgreSQL/PostGIS предоставляет довольно широкие возможности по работе с пространственными данными, однако широкого распространения этот союз до сих пор не получил. Одной из причин такого положения вещей можно считать практически полное отсутствие информации о PostGIS на русском языке. Данная статья призвана отчасти восполнить этот пробел. В ней мы рассмотрим основы работы с PostGIS, в частности будет описан процесс выгрузки данных из shapе-файла в СУБД PostgreSQL. Предполагается, что у вас на компьютере уже установлены PostgreSQL/PostGIS и создана пространственная база данных. Если же это ещё не выполнено, то рекомендуем обратиться к статье "Установка PostgreSQL/PostGIS для Windows". Дополнительную информацию о PostGIS можно получить в руководстве пользователя PostGIS на русском языке.
Оглавление
Доступ запрещен
В случае возникновения ошибки операционной системы 5 ( Access is Denied ), рассмотрите следующие методы устранения:
Проверьте учетную запись пользователя, от имени которой сейчас запущена служба SQL Server. Для получения этих сведений можно использовать диспетчер задач Windows. Найдите значение "Имя пользователя" для исполняемого файла "sqlservr.exe". Если вы недавно изменили учетную запись службы SQL Server, поддерживаемым способом выполнения этой операции является использование служебной программы Диспетчер конфигурации SQL Server.
В зависимости от типа операции — открытие баз данных во время запуска сервера, присоединение базы данных, восстановление базы данных и т. д. — учетная запись, используемая для олицетворения и получения доступа к файлу базы данных, может варьироваться. Сведения о том, какая операция позволяет задавать разрешения к каким учетным записям, см. в статье Защита данных и файлов журналов. Используйте такие средства, как Process Monitor, чтобы узнать, каким образом предоставляется доступ к файлу: в контексте безопасности учетной записи запуска службы экземпляра SQL Server (или идентификатора безопасности службы) либо олицетворенной учетной записи.
Если SQL Server олицетворяет учетные данные для входа пользователя, выполняющего операцию ALTER DATABASE или CREATE DATABASE, в средстве Process Monitor отобразятся, например, следующие сведения.
Проблемы всплывающих подсказок и меток
Этот раздел используется, чтобы решить проблемы, связанные с подсказками и метками.
Слой, использующий пространственные данные из файла фигуры ESRI, всегда содержит внедренные данные.
Чтобы гарантировать, что отчет с картами может быть запущен на сервере отчетов, шейп-файлы ESRI должны быть доступны в качестве ресурса на сервере отчетов. Если добавить слой в карту и указать файл фигуры в локальной файловой системе, пространственные данные будут автоматически внедрены в отчет.
Чтобы заменить внедренные данные на ссылку на файл фигуры ESRI, необходимо передать файл фигуры ESRI с расширением SHP и совпадающий с DBF-файлом на сервер отчетов, а затем изменить источник пространственных данных для слоя.
Проблемы пространственных данных
Этот раздел используется, чтобы решить проблемы, связанные с пространственными данными.
Не виден фон мозаики Bing maps.
Следующие настройки определяют видимость фона мозаики Bing maps при локальном предварительном просмотре или в отчете, запущенном на сервере отчетов.
Должен существовать мозаичный слой карты. В мастере карт или мастере слоев выберите Добавить фон карт Bing для этого представления карты. Это добавит мозаичный слой для представления текущего окна просмотра карты уровня центрирования и масштабирования. Также можно добавить мозаичный слой c панели инструментов панели «Карта».
Координатная система карты для области просмотра должна быть Географическая, а не Двумерная.
Проекция карты должна быть Меркатор.
Для локального предварительного просмотра необходимо иметь доступ в Интернет. Для отчета, запускаемого на сервере отчетов, сервер отчетов должен быть настроен для поддержки мозаичного фона. Дополнительные сведения см. в статье Планирование отчета-карты.
1. Таблицы метаданных OGC
При создании пространственной базы данных автоматически создаются две таблицы метаданных - SPATIAL_REF_SYS и GEOMETRY_COLUMNS. Они создаются в соответствии со спецификацией «Open Geospatial Consortium Simple Features for SQL specification», выпущенной OGC и описывающей стандартные типы объектов ГИС, функции для манипуляции ими и набор таблиц метаданных.
Таблица GEOMETRY_COLUMNS хранит информацию о таблицах базы данных, содержащих пространственную информацию. Её заполнение осуществляется вручную, либо как следствие выполнения специальной процедуры OGC AddGeometryColumn().
Таблица SPATIAL_REF_SYS содержит числовые идентификаторы и текстовые описания систем координат, используемых в пространственной базе данных. Одним из полей этой таблицы является поле SRID – уникальный идентификатор, однозначно определяющий систему координат. SRID представляет из себя числовой код, которому соответствует некоторая система координат. Например, распространенный код EPSG 4326 соответствует географической системе координат WGS84.
Более подробную информацию по таблицами метаданных можно найти в руководстве по PostGIS.
Заданные правила не дают ожидаемых результатов.
Правила применяются к тем аналитическим данным, которые связаны с элементами карты на слое. Используйте следующий список, чтобы идентифицировать проблемы со всеми правилами цвета, размера, ширины и правил типа маркера.
Очередность применения стиля к каждому элементу карты (многоугольнику, линии, точке) такова: свойства слоя, свойства элемента карты для всех элементов карты на слое, заданные правила и для внедренных элементов карты, для которых выбран параметр переопределения, указанные значения. Если для внедренного элемента выбрано переопределение параметра, правила более не применяются, даже если впоследствии изменить значения обратно.
Проблемы полей соответствия. Поля соответствия включают привязку данных между элементами карты и аналитическими данными. Пространственные и аналитические поля данных, которые соответствуют полям совпадения, должны иметь один и тот же тип данных и тот же формат. Если поля соответствия не соответствуют в точности пространственным и аналитическим данным, правило не будет действовать. Например, если поле соответствия для пространственных данных содержит дополнительные пробелы или знаки препинания по сравнению с полем соответствия для аналитических данных, совпадения не будет.
Источнику или набору данных было дано понятное имя, и теперь данные на карте не отображаются.
Определение отчета не обновляется автоматически при ручном изменении имени элемента отчета.
При изменении имени набора данных любая область данных или слой карты, которые ссылаются на этот набор, должны быть обновлены вручную. Для повторной привязки табликса, диаграммы или датчика к набору данных выберите элемент в области конструктора, откройте свойства области данных и выберите имя соответствующего набора данных. Для повторной привязки слоя карты к набору данных выберите слой, откройте свойства слоя и выберите имя соответствующего набора данных.
Проблемы просмотра и центрирования области просмотра
Этот раздел используется, чтобы решить проблемы, связанные с параметрами области просмотра.
Невозможно установить центрирование и область просмотра внедренного элемента карты.
Чтобы центрировать область просмотра на конкретном элементе карты, нужно, чтобы связанные пространственные данные находились на слое с аналитическими данными.
Проблемы размера определения отчета
Этот раздел нужен для решения проблем, связанных с размером определения отчета.
В области конструктора виден образец пространственных данных
Пространственные данные получены из SHP-файла ESRI, но соответствующий DBF-файл недоступен. Файлы фигур ESRI обычно включают и SHP-файл с пространственными данными, и DBF-файл поддержки. Убедитесь, что DBF-файл находится в том же каталоге, что и SHP-файл.
Пространственные данные получены из набора данных, а подключение к данным для запроса недоступно, или текущие учетные данные недопустимы.
Слой карты содержит свойство с выражением. Выражения не вычисляются, пока отчет не будет запущен. Чтобы увидеть карту, следует запустить предварительный просмотр отчета.
Пространственные данные получены из набора данных, у которого нет своей области. Например, если карта вложена в область данных табликса или карта использует один и тот же набор данных для аналитических и пространственных данных, область данных не будет вычисляться, пока отчет не будет запущен.
Пространственные данные содержат значения NULL и пустые строки.
В пространственных данных для элемента отчета-карты значения NULL устанавливаются в ноль (0), а пустые строки — в пустые строки ("").
Для пространственных данных, полученных из базы данных SQL Server, чтобы изменить это поведение, следует изменить запрос, который возвращает пространственные данные.
Рекомендуемые действия
Определите причину, исправьте ошибку операционной системы, затем еще раз попытайтесь выполнить операцию. Есть несколько состояний, сведения о которых могут помочь корпорации Майкрософт уменьшить область изучения для определения ошибки.
3. Работа с shape-файлами
В данном разделе мы попытаемся наполнить нашу пространственную базу данными импортировав их из shape-файла. Для этого сначала преобразуем данные из shape-файла в формат понятный PostgreSQL с помощью утилиты shp2pgsql, а затем загрузим их в базу данных. Наши данные хранятся в географической системе координат WGS84, для которой SRID имеет значение 4326. При переводе данных из shape-файлы мы укажем это значение в качестве параметра утилиты shp2pgsql . Будем загружать в базу данных файл bnd-political-boundary-a.shp (часть набора данных VMap0). Составляем небольшой командный bat-файл, содержащий следующие строки:
Данный набор команд осуществляет конвертацию (shp2pgsql создает файл sql) и загрузку данных в БД (psql).
Для того, чтобы добавить данные к существующей БД, можно использовать ключ -a, при этом схемы существующей БД и загружаемых данных должны совпадать.
Далее вводим пароль для пользователя postgres, открываем нашу базу данных и убеждаемся в том, что все данные были успешно загружены. Для этого в pgAdmin заходим в: «Базы/postgis/Схемы/public/Таблицы», щелкаем правой кнопкой мыши и в контекстном меню выбираем «Обновить», после чего в списке таблиц должна появиться загруженная нами таблица bnd-political-boundary-a.
Утилита shp2pgsql имеет множество ключей, некоторые из которых могут оказаться очень полезными:
Использовать формат «database dump». По умолчанию используется формат «insert», заставляющий базу данных анализировать каждую строку загружаемого файла. Формат «database dump» не требует подобного анализа, вследствие чего загрузка файла осуществляется значительно быстрее.
Использовать SRID. Параметр SRID необходим при осуществлении перепроецирования внутри базы данных.
Использовать 32-битные целые числа для всех значений типа integer. Необходимость этого параметра объясняется тем, что, иногда, в заголовках dbf-файлов указан размер поля гораздо больше, чем используется на самом деле.
Использовать режим добавления. Применяется в случае добавления данных в существующую таблицу.
А теперь рассмотри ключи клиента PostgreSQL psql, которые мы использовали при загрузке данных:
Учетная запись, от имени которой идет подключение к базе данных.
Имя файла, который требуется выполнить.
Имя базы данных, в которую следует загрузить результат выполнения файла.
Максимальное количество пространственных элементов превышено
По умолчанию, карта может иметь 20 000 элементов или 1 000 000 точек. Если карта превышает эти пределы, можно воспользоваться одним из следующих методов.
Уменьшить разрешение карты.
Уменьшить координаты окна просмотра карты, чтобы просматривать меньшую область.
Если пространственные данные получены из набора данных отчета, установите фильтр, чтобы ограничить количество данных из набора. Фильтр должен быть задан для поля, имеющего непространственный тип данных.
Если пространственные данные получены из базы данных SQL Server, измените запрос, чтобы он использовал пространственные функции для ограничения данных меньшей областью.
Для карты были заданы центрирование и область просмотра в отчете. Почему при повторном открытии отчета карта выглядит иначе?
Если учетные данные пользователя, необходимые для считывания пространственных данных, недоступны отчету при его открытии, используются пространственные данные заполнителя. В зависимости от параметров центрирования и масштабирования, заданных для окна просмотра карты, представление карты может быть центрировано на различных слоях.
Чтобы перезагрузить пространственные данные и использовать сохраненный в отчете центр представления карты, щелкните правой кнопкой окно просмотра карты и выберите команду Перезагрузить. После ввода учетных данных для пространственного источника данных слой загрузит пространственные данные и вид карты будет восстановлен.
Что означает значение NaN на цветовой шкале?
NaN означает «Не является числом». Значения на цветовой шкале должны быть численными. Проверьте настройки распределения и текстовое значение условных обозначений для правил, связанных с цветовой шкалой. Если были созданы пользовательские диапазоны распределения, убедитесь, что нижняя граница соответствует первому диапазону, а верхняя граница — последнему.
Проблемы слоя
Этот раздел используется, чтобы решить проблемы, связанные с параметрами слоя.
Как изменить текст на мозаичном слое?
И представление Дорога , и представление Гибридное включает в себя текст. Текст — это часть мозаики, приходящая с веб-служб Bing maps.
Чтобы включить мозаичный слой без текста, выберите вид Воздушный .
При задании смещения для конкретного элемента карты перемещается кластер элементов карты
Пространственные данные задают элементы карты, отображаемые на каждом слое карты. Пространственные данные из источника данных могут представлять собой точку, несколько точек, линию, несколько линий или набор многоугольников. Все элементы карты являются отдельными единицами. Если элемент карты содержит несколько точек, то при перемещении элемента будут перемещены все точки этого элемента карты.
Данные всех элементов карты определяются с помощью формата пространственных данных из внешнего источника. Например, если запрос задает пространственные данные из базы данных SQL Server, каждая строка в результирующем наборе может содержать множественные наборы точек, линий или координат вершин многоугольника. Все элементы карты, заданные одной строкой в результирующем наборе, обрабатываются как целое. Если требуется изменить отображение конкретных наборов координат, выполните одно из следующих действий.
Измените запрос, чтобы он возвращал набор координат как отдельные строки в результирующем наборе.
Выберите элементы карты, которые нужно изменить, и установите соответствующую внедренную точку, линию, или свойства многоугольника путем переопределения свойств отображения по умолчанию для соответствующего типа слоя.
2. Пространственные запросы
В данном и последующих разделах все примеры будут рассмотрены для созданной в статье "Установка PostgreSQL/PostGIS для Windows" базы данных «postgis».
Попытаемся создать таблицу, содержащую пространственные данные и применить к ним функции PostGIS. Вставьте нижеприведенный запрос в окно запросов SQL и нажмите кнопку «Выполнить запрос» .
В данном примере мы создали таблицу points, содержащую два поля: поле pt типа geometry и поле name типа varchar, после чего добавили (insert) в нее три записи, содержащих информацию о точках. Затем осуществили выборку с использованием функций PostGIS: ST_Distance() и ST_AsText(). В качестве параметра обе функции используют объект типа geometry. Функция ST_Distance() рассчитывает расстояние между двумя указанными точками плоскости, а ST_AsText() возвращает геометрию объекта в текстовом формате WKT (Well-Known Text). Формат WKT включает информацию о типе объекта и координаты, составляющие объект.
5. Пространственные индексы
Индексы имеют большое значение при работе с таблицами, хранящими пространственную информацию. Их использование позволяет значительно увеличить скорость выполнения запросов (подробнее о индексах). Поэтому попытаемся разобраться с тем, что они из себя представляют и как с ними работать.
Индексы в PostGIS представлены в виде R-дерева (R-Tree), реализованного как частный случай обобщенного поискового дерева (GiST). Пример R-дерева представлен на следующем рисунке:
Эта структура данных разбивает пространство на множество иерархически вложенных и, возможно, пересекающихся прямоугольников (для двумерного пространства). В случае трехмерного или многомерного пространства это будут прямоугольные параллелепипеды (кубоиды) или параллелотопы. Алгоритмы вставки и удаления используют эти ограничивающие прямоугольники для обеспечения того, чтобы «близкорасположенные» объекты были помещены в одну вершину дерева. В частности, новый объект попадет в ту вершину, для которой потребуется наименьшее расширение ее ограничивающего прямоугольника. Каждый элемент листовой вершины хранит два поля данных: способ идентификации данных, описывающих объект (либо сами эти данные) и ограничивающий прямоугольник этого объекта.
Создание пространственных индексов
Проиндексируем таблицу political-boundary-a нашей базы данных. Для этого в окне запросов SQL выполним команду:
После этого, если перейти в: «Таблицы/ bnd-political-boundary-a/Индексы» и нажать «Обновить», то среди списков индексов появится вновь созданный индекс bnd-political-boundary-a-index.
Затем в окне запросов SQL выполним команду:
На самом деле это две разных команды: VACUUM и ANALYZE. Команды VACUUM и ANALYZE следует выполнять регулярно для восстановления дискового пространства, занятого измененными или удаленными записями и для обновления информации о распределении данных в таблице соответственно. Информация, полученная в результате выполнения команды ANALYZE, используется оптимизатором для выбора наиболее быстрого плана выполнения запроса.
На этом процесс создания пространственного индекса закончен.
Использование пространственных индексов
Необходимо помнить, что пространственные индексы автоматически не используются при произвольных пространственных запросах, они наиболее эффективны при определении пересечений областей. Остановимся на этом моменте поподробней. Системы управления пространственными базами данных (СУПБД), в том числе PostgreSQL, обрабатывают запросы диапазонов на основе парадигмы фильтрации и очистки. Этот процесс состоит из двух этапов. На первом этапе запрашиваемые объекты представляются своими минимальными ограничивающими прямоугольниками (MBR, minimal bounding rectangles). Смысл этого состоит в том, что найти пересечение области запроса и прямоугольника легче (менее накладно с вычислительной точки зрения), чем пересечение области запроса и произвольного пространственного объекта неправильной формы. Если область запроса – прямоугольник, то для выяснения того, пересекаются ли два прямоугольника, потребуется не боле трех вычислений. Этот этап называется фильтрацией, поскольку именно тогда устраняются многие «кандидаты». Второй этап состоит в обработке результата, полученного во время фильтрации, с использованием точных геометрических построений. Процесс очистки требует значительных вычислительных ресурсов, однако благодаря этапу фильтрации входное множество на этом шаге имеет невысокую мощность. Стратегию фильтрации-очистки иллюстрирует следующий рисунок:
В PostGIS процесс фильтрации, осуществляющийся с использованием пространственных индексов, использует оператор «&&». Сущность этого оператора отражает следующийрисунок:
Функции пространственного сравнения (ST_Intersects(), ST_DWithin(), ST_Contains() и другие) автоматически используют оператор «&&». Также существуют и неиндексированные варианты этих функций, они отличаются от вышеописанных тем, что при их написании используется префикс «_»: _ST_Intersects(), _ST_DWithin(), _ST_Contains().
Тестирование пространственных индексов
А теперь давайте сравним скорость выполнения запросов с использованием пространственных индексов и без. В окне SQL запросов выполним следующие команды. Запрос без использования пространственного индекса:
Запрос с использованием пространственного индекса:
Эти запросы определяет имя объекта (nam), форма которого (the geom) пересекается (ST_Crosses) с линией ('LINESTRING(80 49, 80 51)'). Функция ST_GeomFromText() возвращает тип геометрии объекта, заданного в формате WKT с указанием SRID. Выполните оба этих запроса и сравните время их выполнения (таймер находится в правом нижнем углу окна SQL запросов). Время выполнения второго запроса будет в несколько раз меньше, чем первого, тем самым свидетельствуя о том, что использование пространственных индексов позволяет значительно сократить время выполнения запроса.
Индексы и планы запросов
СУБД создавались для работы с большими объемами данных, хранящимися на жестких дисках. Процесс получения данных с жестких дисков очень медленный (по сравнению с ОЗУ), именно поэтому ядро любой СУБД спроектировано таким образом, чтобы обеспечить получение как можно большего объема данных при наименьшем количестве обращений к жесткому диску. Планы запросов представляют собой правила, используемые СУБД для преобразования SQL-запроса в стратегию доступа к данным. В PostgreSQL можно ознакомиться с планом запроса, использовав перед его началом ключевое слово «EXPLAIN». Для получения оценки выполнения запроса, в его начале следует ввести «EXPLAIN ANALYZE». В pgAdmin существует инструмент, позволяющий визуализировать план запроса. Для этого необходимо нажать на иконку .
Посмотрим, что покажет нам план запроса, не использующего пространственный индекс:
Полученный результат говорит о том, что для выполнения запроса будет проведено полное сканирование всей таблицы bnd-political-boundary-a.
А теперь обратимся к плану этого же запроса, только использующего пространственные индексы:
Из рисунка видно, что для выполнения запроса будет проведено сканирование только индекса
bnd-political-boundary-a-index.
Параметры центрирования и области просмотра для слоя карты не работают.
Когда область просмотра центрирована на пространственных данных конкретного слоя и центр просмотра не совпадает с центром слоя, это значит, что, возможно, есть небольшие области, включенные в пространственные данные, которые слишком малы, чтобы отображаться в области просмотра. Например, пространственные данные для страны могут включать в себя маленькие острова или другие небольшие территории как часть общей территории. Область просмотра использует пространственные данные для вычисление центра слоя.
Переопределить вычисления для слоя можно одним из следующих способов.
Задать пользовательский центр области просмотра.
Изменить масштаб области просмотра, чтобы устранить местоположения, которые должны быть исключены.
Внедрить пространственные данные в отчет и удалить местоположения, которые следует исключить.
На карте не видны один или несколько слоев.
Видимость слоев карты в отчете зависит от доступности пространственных данных, связи между пространственными и аналитическими данными, типа пространственных данных и типа соответствующего слоя, видимости и прозрачности параметров слоя и порядка отображения слоев. Если данные слоя не видны, проверьте следующие параметры.
Тип слоя и тип пространственных данных. Тип слоя отображает только пространственные данные, соответствующие типу уровня. Например, если тип уровня — «Точка», а тип пространственных данных — «Линия», ничего не отобразится.
Совпадения значений полей. Значения в полях, заданных для связи аналитических и пространственных данных, должны уникальным образом указывать на каждый элемент карты. Типы данных полей должны совпадать. Значения полей должны быть одинаковыми. Дополнительные сведения см. в разделе Проблемы с условными обозначениями, цветовой шкалой и шкалой расстояний.
Порядок слоев. Порядок слоев на панели «Карта» — это порядок, в котором слои отображаются в модуле подготовки отчетов. Пространственные данные на слоях, которые отображаются первыми, могут быть заменены пространственными данными слоев, отображаемых позже. Слои наверху списка отображаются первыми. При изменении порядка слоев в списке изменяется и порядок отображения слоев.
Прозрачность. Можно задать прозрачность каждого слоя карты независимо. Значения по умолчанию для прозрачности зависят от того, как был добавлен слой. Прозрачность 0% означает, что слой непрозрачен и что через него не будут видны данные никаких других слоев. Чтобы другие данные были видны сквозь существующий слой, измените значение на более высокое, что обеспечит нужный эффект.
Видимость. Видимость для слоя может принимать значения Видимый, Скрытый или По масштабу, на основании масштаба окна просмотра карты. Также можно задать максимум и минимум диапазона для масштаба. Видимость может быть основана на выражении, которое вычисляет одно из этих значений.
Можно переключать видимость каждого слоя на панели «Карта». При конструировании каждого слоя выключите все остальные, чтобы определить, относится проблема к конкретному слою или же она связана с проблемами прозрачности других слоев.
Подключение файлов, размещенных в запоминающем устройстве, подключаемом к сети
Msg 5120, Level 16, State 101, Line 1 Unable to open the physical file "\\servername\sharename\filename.mdf". Operating system error 5: (Access is denied.).
Эта проблема возникает из-за того, что SQL Server сбрасывает разрешения файлов при отключении базы данных. При попытке повторно подключить базу данных происходит сбой из-за ограниченных разрешений общего доступа.
Чтобы устранить эту проблему, сделайте следующее.
Используйте параметр запуска -T для запуска SQL Server. Используйте этот параметр запуска, чтобы включить флаг трассировки 1802 в диспетчере конфигурации SQL Server (сведения о 1802 см. в разделе Флаги трассировки). Дополнительные сведения об изменении параметров запуска см. в разделе Параметры запуска службы ядра СУБД.
Отключить базу данных можно с помощью приведенной ниже команды.
Восстановить подключение базы данных можно с помощью приведенной ниже команды.
Требуется дополнительная помощь?
Попробуйте выполнить следующее.
Читайте также: