Как уменьшить резкость мыши windows 10

ГИС, PHP и SQL Server 2008

Геоинформационные системы (ГИС) становятся все более и более важными. Помимо данных, основу составляют специализированные базы данных, способные решать такие задачи, как «Найти муниципальные образования, находящиеся в пределах 1 км от трассы D1». Это, конечно, связано с визуализацией данных на картах. Мы покажем вам, как создать простое ГИС-приложение.

Наклейки:

Результатом наших усилий станет веб-приложение, способное отображать контуры регионов Чешской Республики и находить муниципалитеты, расположенные в выбранном регионе. Для муниципалитетов у нас есть только название и их географические координаты, для регионов снова название и координаты, описывающие границу региона. Я использовал примерные данные по регионам с сайта gc.fa-fa.org и нашел координаты муниципалитетов, очень приблизительные, когда-то в интернете, но источник уже не помню.

Цель состоит не в том, чтобы создать готовое к использованию приложение, а в том, чтобы показать концепцию. Мы будем использовать Virtual Earth Map Control для отображения информации, PHP позаботится об обработке данных на сервере и jQuery на клиенте. Функциональность ГИС будет предоставлена ​​SQL Server 2008.

SQL Server 2008

Одной из многих новых функций SQL Server 2008 является поддержка географических данных, основанная на рекомендациях Open Geospatial Consortium. Поддержка работы с географической информацией также доступна в версии SQL Server 2008 Express, которая также бесплатна для коммерческих целей. Я рекомендую загрузить версию SQL Server 2008 Express with Advanced Services, которая, помимо ядра базы данных, включает поддержку полнотекстовых служб и служб Reporting Services для создания «печатных» отчетов. SQL Server 2008 Express имеет некоторые ограничения по сравнению со «взрослым» SQL Server:

  • Максимальный размер базы данных – 4 ГБ
  • Не будет использовать более 1 ГБ оперативной памяти
  • Не будет использовать более 1 процессора или ядро

Все выпуски SQL Server2008 имеют идентичное ядро, поэтому проблем с переносом базы между редакциями нет. Выпуски различаются поддерживаемыми службами и ограничениями на использование аппаратного обеспечения.

Установка

Частью установки является средство проверки конфигурации системы, которое проверяет соответствие компьютера системным требованиям для SQL Server 2008.

Первоначальное окно установки

Проверка системных требований

Возможно, у вас не установлен Powershell, который SQL Server 2008 использует для настройки из командной строки. Вам также понадобится .NET Framework 3.5, но установщик SQL Server 2008 может установить его самостоятельно. Еще одна вещь, о которой следует подумать, — это учетные записи для запуска каждой службы SQL Server. SQL Server 2008 состоит из нескольких служб (ядро базы данных, полнотекстовые службы, службы отчетов, службы интеграции…), и в производственной среде рекомендуется использовать отдельную учетную запись пользователя с базовыми правами (группа пользователей) для запуска каждой службы, т.е. ни для чего другого не используется. Вы можете запустить все под одной учетной записью на тестовой машине. Вы можете просмотреть всю процедуру установки в скринкасте.

Читайте также:  0 patch agent для windows как пользоваться

Подключение к SQL Server 2008

Для управления SQL Server 2008 используется инструмент SQL Server Management Studio, входящий в состав установки. Он служит как для управления сервером и отдельными базами данных, так и для отладки запросов и процедур. При запуске вы устанавливаете местоположение сервера и тип аутентификации. Если вы подключаетесь к локальному компьютеру, вы можете использовать (local) вместо имени компьютера. После обратной косой черты следует имя экземпляра SQL Server, созданного во время установки.

Создать базу данных

  1. Щелкните правой кнопкой мыши ветку базы данных в обозревателе объектов

Альтернатива

Все администрирование SQL Server 2008вы можете сделать это с помощью команд SQL из командной строки с помощью инструмента sqlps (классический Powershell, содержащий инструменты для SQL Server 2008). Следующий пример — создание новой базы данных. Вы также можете создавать таблицы, пользователей, индексы,…

  1. Запустить sqlps
  2. Выполните команду: Invoke-Sqlcmd -Query «CREATE DATABASE CR;» -ServerInstance «(локальный)SQLEXPRESS»

Создание таблиц

  1. Развернуть только что созданное дерево базы данных

Индексы

Индексы значительно ускоряют обработку запросов. Без хорошо спроектированных индексов большие базы данных и базы данных ГИС совершенно непригодны для использования с точки зрения производительности. Даже в нашем простом примере использования функций ГИС запросы будут выполняться за десятки секунд, если у нас не созданы индексы для географических данных. Для настройки индекса используется окно План выполнения, которое можно открыть из меню Запрос. В этом окне вы можете увидеть, используются ли индексы. На следующем снимке экрана показан запрос без использования индексов. Вы можете видеть, что он «застрял» на фильтрации данных из таблицы муниципалитетов. Продолжительность запроса составляла около 35 секунд:

Здесь я добавил указатель к столбцу Village.Coordinates, который содержит географическую информацию. Продолжительность запроса составила чуть менее 2 секунд:

Из примеров видно, что достаточно было добавить только один единственный индекс, и ответ от базы данных стал значительно быстрее. И результат будет улучшаться.

Создание индекса

  1. Развернуть ветвь таблицы в обозревателе объектов
  2. Щелкните правой кнопкой мыши по индексам

Сеанс

Чтобы создать связь между двумя таблицами, нужно начать с открытия дерева объектов таблицы, которое будет содержать внешний ключ (Foreign Key).

    Щелкните правой кнопкой мыши список «Ключи» и выберите «Создать».Внешний ключ…

Несколько благонамеренных советов по созданию баз данных

При описании создания базы данных часто забывают, как ее спроектировать. Я не претендую на то, чтобы описать здесь теорию реляционных баз данных, а скорее даю благонамеренный совет, который часто игнорируют:

  • Каждая таблица должна содержать информацию только одного типа. Я видел, как некоторые пытались втиснуть всю базу данных в одну таблицу. К сожалению, это плохая привычка табличных калькуляторов.
  • Поле таблицы должно быть далее неделимым. Классический пример — сохранение полного имени человека в одном поле. Одного из моих друзей зовут Петр Штепан. Как его зовут?
  • Если у меня есть одна часть информации, которая связана с несколькими другими частями информации (лицо — почтовый адрес, платежный адрес, адрес доставки), то информацию необходимо разделить на несколько таблиц и установить связь между ними. Я уже видел таблицу, в которой поля были от Street1 до Street 7, от PSC1 до PSC7 и т. д. В примере с адресом, который я привел, я бы создал три таблицы и связал их с помощью ключей:
    • Человек
    • Адрес
    • Тип адреса
  • Отсутствующие индексы и плохо построенные запросы не могут быть устранены даже самым лучшим аппаратным обеспечением. Один из моих коллег, после которого я взял на себя проект на своей предыдущей работе, создал отчет, на создание которого ушло 5 часов. Генерация заняла 30 минут после добавления индексов и 4 минуты после дальнейшей отладки…
  • Если вы не создаете отношения между связанными таблицами, то реляционная база данных бесполезна для вас, и рано или поздно вы нарушите ссылочную целостность данных. В коде этого не видно.
  • Сохраните файлы, которые относятся к информации в базе данных, в базе данных, вы упростите резервное копирование и согласованность данных с остальной частью базы данных. Вы можете хранить файлы, используя атрибут FILESTREAM в поле varbinary(MAX)до размера, поддерживаемого файловой системой на сервере.
Читайте также:  Как вернуть разделы жесткого диска windows 10

Безопасность

Чтобы использовать базу данных для веб-приложения, к ней должен получить доступ пользователь, от имени которого запущен пул приложений в IIS.

Затем веб-приложение должно быть назначено соответствующему пулу приложений:

И пользователь ApplicationPool должен создать логин на сервере базы данных или должен быть в группе, у которой уже есть логин на сервере базы данных:

Как видите, в целях тестирования я создал пул приложений, который работает под моей учетной записью домена, для которой установлена ​​роль системного администратора сервера базы данных. Для производственного развертывания необходимо создать учетную запись с минимально необходимыми правами как для системы, так и для базы данных (роль db_datareader), чтобы снизить риск злоупотребления учетной записью.

Поддержка ГИС

Одним из нововведений SQL Server 2008 является новый тип geography, предназначенный для хранения и работы с географической информацией. Тип geography — это объект .NET CLR, который также может манипулировать географической информацией (искать пересечения, преобразовывать в текст, из текста в географический объект, вычислять размеры и т. д.). Общеизвестный текст (WKT) Открытого геопространственного консорциума (OGC) используется для вставки данных в столбец географии. Образец:

Второй параметр метода STGeomFromText определяет используемую систему координат, в частности WGS 84. Для извлечения географических данных используются методы форматирования вывода либо в WKT, либо в GML:

Список поддерживаемых методов работы с географической информацией (пересечение, площадь, расстояние…) можно найти в MSDN.

Несколько примеров (для наглядности некоторые разбиты на несколько шагов, конечно все можно сделать одним SELECT):

Площадь Карловарского края:

Расстояние Прага – Либерец:

Муниципалитет врадиус 10 км от Влашими:

Дополнительные сведения о SQL Server 2008 см. в бесплатной электронной книге Introducing Microsoft SQL Server 2008.

Читайте также:  Как добавить системную переменную windows 10

Драйвер SQL Server 2005 для PHP

Чтобы использовать SQL Server 2008, вам необходимо загрузить драйвер SQL Server 2005 для PHP. Хотя в названии упоминается SQL Server 2005, драйвер также работает с SQL Server 2008. Для подключения используется SQL Native Client. Установка содержит две библиотеки драйверов: php_sqlsrv.dll (небезопасный для потоков), php_sqlsrv_ts.dll (безопасный для потоков) и документацию. Установка очень проста. Вы копируете драйвер в другие библиотеки PHP, обычно в каталог ext в каталоге установки PHP, и добавляете библиотеку в php.ini. Затем вы должны найти раздел sqlsrv.

в выводе функции phpinfo().

Используйте функцию sqlsrv_connect, чтобы получить контекст подключения к базе данных. Функция имеет два параметра — адрес сервера и поле параметра, в котором можно указать свойства соединения — имя базы данных, учетные данные, использование пула соединений и т. д. Если не указать учетные данные, используется проверка подлинности Windows.

Запрос SQL выполняется функцией sqlsrv_query, которая имеет собственный запрос в качестве одного из параметров, за которым следует контекст соединения. Если вы используете параметризованные запросы, что абсолютно необходимо для защиты от атаки SQL Injection, вы передадите массив значений в качестве следующего параметра функции, чтобы заменить параметры в запросе. Замена параметров в запросе конкретными значениями производится только на SQL Server, когда Execution Plan готов. В результате больше невозможно выполнять подзапросы в параметрах.

Цикл while и функция sqlsrv_fetch используются для чтения результата запроса, и вы передаете запрос в качестве параметра.

Чтобы получить конкретное значение, вы используете функцию sqlsrv_get_field, гдепервый параметр указывает столбец (индексируется с нуля), второй столбец — это обрабатываемый запрос, а третий параметр — тип данных возвращаемого значения. Это необходимо, когда у вас есть текстовые данные в базе данных, хранящиеся в Unicode (поля данных nvarchar, nchar, ntext). Обработка текста, сохраненного в Unicode:

Другими функциями для выборки данных являются sqlsrv_fetch_array и sqlsrv_fetch_object. Работа с хранимыми процедурами практически идентична работе с классическим SQL:

Визуализация данных

Для визуализации географических данных, вероятно, наиболее доступным будет использование одного из общедоступных картографических сервисов. Для этой демонстрации я выбрал Virtual Earth Map Control. Для встраивания карты в страницу и управления ею с помощью JavaScript в основном требуется две вещи.

  • Добавить ссылку на библиотеку javascript Virtual Earth Map Control
  • Создать элемент

Базовый вид карты на странице:

Когда у нас отображается карта, мы можем добавить дополнительные слои с нашей собственной графикой. В следующем примере точка добавляется на карту на пользовательском слое:

Что может упростить отображение данных, так это поддержка форматов GeoRSS и KML.

Вывод

Автором статьи является Штепан Бечински, специалист по инструментам разработки Microsoft в Чешской Республике. Информацию для разработчиков вы также можете найти в блоге экспертов чешской Microsoft.

Штепан Бечинский

Игрушка, программист, повар, Microsoft.

Поделиться с друзьями
ОС советы