Смекни!
smekni.com

MapInfo Professional 90 Руководство пользователя (стр. 71 из 125)

Многие файлы, которые используются в MapInfo Professional, включают в себя больше объектов и информации, чем необходимо для решения конкретной задачи. Во многих случаях легче работать с частями файлов данных, чем с полными файлами. Например, если Вы обрабатываете криминальную статистику по какому-либо району, используя данные переписи, то Вам не нужны данные переписи всего государства. Необходимо извлечь лишь данные переписи для этого района.

Существуют два способа создания новой таблицы, содержащей выборочные записи из исходной таблицы. Можно интерактивно выбрать объекты, которые Вас интересуют, с помощью инструментов выборки и поместить их в новую таблицу. Или можно использовать SQL-запрос для выбора необходимых объектов, используя при этом функции SQL. Пример использования команды SQL-запрос смотрите в разделе: Пример 1 - Расчет плотности населения с помощью SQL-запроса на стр. 349. Сохранение итоговой таблицы в этих двух случаях будет одинаковой процедурой.

Внимание: Большинство запросов, которые будут приведены в следующих примерах,

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

Интерактивный выбор объектов

1. Выполните команду Файл > Открыть таблицу и откройте таблицу в окне Карты.

2. Выберите необходимые Вам объекты для новой таблицы, используя инструменты Выбор, Выбор-в-круге или Выбор-в-области. Для того чтобы выбрать несколько объектов используйте клавишу SHIFT.

3. В меню Файл выполните команду Сохранить копию и сохраните таблицу SELECTION. Таблица может быть сохранена под любым именем.

Команда SQL-запрос

Выборка - это подмножество данных, сгруппированных по значениям одной или нескольких переменных. Выборки создаются путем постановки вопросов (посылки запросов) о данных. Сколько клиентов проживает в Ногинском районе? В каком районе самый высокий уровень тяжких преступлений? MapInfo Professional хранит ответы на такие вопросы во временных таблицах, называемых таблицами запросов.

В начале этой главы мы разобрали, как создавать выборки с помощью команды Запрос > Выбрать. Теперь рассмотрим более мощную команду - SQL-запрос.

Хотя команда Выбрать позволяет формулировать достаточно сложные запросы, команда SQL-запрос еще более мощная. Записи в таблице запросов, созданной командой Выбрать, не содержат никакой дополнительной информации по сравнению с исходной таблицей. Это те же записи, они просто собраны вместе. С помощью команды SQL-запрос можно создавать таблицы запросов, содержащие данные, которые явно не присутствуют в исходных таблицах.

Диалог SQL-запрос - один из наиболее сложных в MapInfo Professional. Не пугайтесь. Разобравшись в значениях каждого окошка, Вы без особого труда сможете формулировать сложные запросы. Вы сможете напрямую вводить выражения в текстовые окошки или составлять их, выбирая элементы из окошек Списков.

Проще всего разобрать работу с этим диалогом на подробном примере. В этом примере будет использована таблица WORLD, поставляемая в комплекте поставки MapInfo Professional, так что Вы сможете сами проверить работу SQL-запроса. Короткое описание разделов диалога приведено рядом с описанием каждого действия. Подробный разбор каждого окошка будет дан после примера.

Внимание: Увеличение текстовых окошек не гарантирует, что результат запроса будет корректно обработан MapInfo Professional. По-прежнему при очень длинных запросах можно получить сообщение об ошибке "Слишком сложный запрос".

Пример 1 - Расчет плотности населения с помощью SQL-запроса

Возьмем таблицу статистики населения всего мира (WORLD) и создадим таблицу всех стран, плотность населения которых превышает 500 человек на квадратный километр.

Будем использовать следующую формулу вычисления плотности населения:

• POPULATION / AREA

Таблица WORLD содержит колонку численности населения ((pop_1994), но не содержит данных о площадях государств. Однако поскольку каждой записи таблицы WORLD соответствуют графические объекты, MapInfo Professional автоматически рассчитывает площадь каждого государства.

Откройте таблицу WORLD.TAB и увеличьте его на все окно. В меню Запрос нажмите SQL-запрос - появится диалог SQL-запрос.

Заполните диалог SQL-запрос:

1. В поле Из таблиц выберите WORLD из окошка списка Таблицы.

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

2. Окошко Из таблиц надо заполнить до того, как Вы начнете заполнять окошко Выбрать колонки. На основании содержимого окошка Из таблиц MapInfo Professional создает список колонок, которые можно упоминать в окошке Выбрать колонки.

3. Нажав клавишу TAB, переместитесь в окошко Выбрать колонки и удалите там звездочку (*). Нам необходимо перечислить колонки, которые следует включить в таблицу запроса.

Внимание: Звездочка в поле Выбрать колонки используется для обозначения всех колонок всех исходных таблиц.

Напомним, что таблица запроса - это временная таблица, в которой MapInfo хранит результаты поиска по запросу.

4. Выберите Country из списка Колонки.

5. Выберите pop_1994 из списка Колонки.

Теперь надо вычислить плотность населения. Вспомним, что плотность вычисляется делением численности населения на площадь страны. В таблице нет данных о площадях. Но их можно вычислить с помощью функции Area, которая находит площадь графических объектов, соответствующих заданной записи. Поскольку таблица WORLD содержит графические объекты, то MapInfo Professional может рассчитать площадь каждой страны и, таким образом, плотность населения.

6. Выберите знак деления (/) из списка Операторы.

7. Выберите Area из списка Функции.

Таким образом мы создали вычисляемую колонку. Вычисляемой называется колонка, содержащая результат вычислений, производимых над значениями из других колонок. При создании таблицы запроса MapInfo включит в нее две колонки: Country и pop_1994/Area(obj, "sq km"), или колонку плотности населения. Во всех географических функциях MapInfo Professional указывает единицы измерения. Если Вам нужно получить площадь в квадратных милях, вместо "sq km" введите "sq mi".

Теперь надо составить выражение, согласно которому будут выбираться только страны с плотностью населения больше 500 человек на квадратный километр.

8. С помощью клавиши TAB переместитесь в окошко С условием и выберите pop_1994 в поле списка Колонки.

9. Выберите знак деления (/) из списка Операторы.

10. Выберите Area из списка Функции.

11. Выберите знак "больше" (>) из списка Операторы

12. Введите значение 500.

Мы построили выражение "Выбрать все страны с плотностью населения (pop_1994/Area(obj, "sq km")) больше (>) 500 человек на квадратный километр".

13. Оставьте пустым поле Сгруппировать по колонкам.

14. С помощью клавиши TAB переместитесь в поле Порядок задать по колонкам и выберите колонку Country.

В окошке Порядок задать по колонкам можно задать порядок, в котором записи будут помещены в таблицу запроса. Вы выбрали Country. Это означает, что записи должны следовать так, чтобы значения в поле Country располагались в алфавитном порядке.

15. С помощью клавиши TAB переместитесь в окошко И поместить в таблицу. Введите ПЛОТНОСТЬ.

MapInfo Professional дает таблицам запросов следующие стандартные названия: "Query1", "Query2", "Query3" и т.д. Вы можете задавать свое название таблицы запроса в окошке "И поместить в таблицу". Тогда MapInfo Professional назовет результирующую таблицу, например, "Плотность".

16. Нажмите кнопку Проверить. MapInfo Professional проверит синтаксическую правильность предложений SQL-запроса. Если будут обнаружены ошибки, MapInfo Professional покажет сообщение: какого типа ошибка и в каком окошке она допущена.

17. Проверьте, установлен ли флажок Результат в Список. В режиме Результат в Список MapInfo создает окно Списка для таблицы запроса. Если этот режим не установлен, MapInfo создает временную таблицу запроса, но не показывает ее. Чтобы просмотреть эту таблицу, Вам нужно будет выполнить команду Окно > Новый Список и из списка таблиц выбрать ПЛОТНОСТЬ.

18. Для того чтобы показать результаты в активном окне карты, отметьте флажок Показать результате в текущем окне карты. Это поле недоступно, если нет открытых окон карт Состояние этого поля невозможно сохранить в составе шаблона. По умолчанию флажок не стоит.

19. Нажмите OK.

MapInfo Professional создаст таблицу, где первая колонка содержит название страны, вторая - население, третья - плотность населения. Обратите внимание, что страны перечислены в алфавитном порядке, а плотность населения в них превышает 500 человек на квадратный километр (pop_1994/ Area(obj, "sq mi") > 500).

Пример 2 - Вычисление плотности населения с SQL-запросом

Чтобы с помощью оператора SQL-запрос выбрать только государства с высокой плотностью населения, проделайте следующее:

1. Выполните команду Файл > Открыть таблицу и откройте таблицу ЭТАТЕЭв окне Карты.

2. В меню Запрос нажмите команду SQL-запрос и заполните диалог SQL-запрос.

Будет создана новая таблица HIDENSY, которая содержит только штаты с относительно высокой плотностью. Если в окошке Выбрать колонки поместить символ (*), то все колонки из таблицы World попадут в таблицу HIDENSY.

3. В меню Файл выполните команду Сохранить копию и сохраните таблицу SELECTION. Таблица может быть сохранена под любым именем.

Дополнительные примеры приведены в следующих разделах Справочной системы: