Содержание


Наборы картографических и геопространственных данных на Data.gov

Как нанести данные правительства США на географическую карту

Comments

В моей статье Портал данных госучреждений США Data.gov я представил относительно новый Web-сайт федерального правительства США и платформу для открытого доступа к этим данным. С тех пор произошли некоторые интересные события, связанные с Data.gov, включая публикацию базы открытого исходного кода Data.gov (см. раздел Ресурсы).

Однако с первых дней своего существования Data.gov проявлял особый интерес к распространению геопространственной информации. Там находится огромное количество сведений об управляемой территории, главным образом суши, а также некоторой части моря. Область охвата этой информации простирается от крупных территориальных объектов федерального уровня до кадастровой собственности и государственных служб на уровне штатов и даже округов. Эта информация чаще всего представлена в виде карт и картографических слоев, и на сайте Data.gov есть специальный раздел для работы с такими наборами геопространственных данных. На момент написания статьи на сайте размещено почти 450 тыс. наборов геопространственных данных против менее чем 5000 наборов негеопространственных ("неструктурированных") данных.

Ясно, что такие данные в первую очередь относятся к контексту государственного управления. Но Data.gov позволяет вынести данные госучреждений за рамки этого строгого контекста государственного сектора. Предприятия, которым нужно планировать все от управления производственно-распределительной цепочкой или маркетинговых кампаний до открытия новых магазинов, могут использовать такие данные для определения лучших стратегий в сочетании с другими факторами, от финансовых условий до состояния рынка. Другими словами, географические данные, представленные на Data.gov, могут стать важным компонентом бизнес-анализа. Эта статья учит использовать географические наборы данных Data.gov с акцентом именно на бизнес-анализ.

Поиск данных

Рядом со ссылками на неструктурированные данные (Raw Data) на главной странице Data.gov находятся ссылки на наборы геопространственных данных. Как видно на рисунке 1, каталог геопространственных данных очень близко напоминает каталог неструктурированных данных. Очевидно, что понадобятся большие усилия, чтобы исследовать более 400 тыс. наборов данных, если рассматривать их по 10 или даже по 100 на странице, так что возможность поиска приобретает жизненно важное значение. К сожалению, сайт не позволяет искать по пространственным признакам, например, найти все наборы данных, относящихся к регионам, карты которых включают точку с широтой 40.014986 и долготой -105.270546. Конечно, можно искать по метаданным, например, «Боулдер, штат Колорадо», но это по многим причинам не очень эффективно.

Рисунок 1. Каталог геопространственных данных Data.gov
Каталог геопространственных данных Data.gov
Каталог геопространственных данных Data.gov

Портал Data.gov включает отдельный сайт, Geo.Data.gov, который предоставляет больше возможностей для поиска геопространственных данных, в том числе даже поиск по пересечению или полному вхождению карт регионов, но на момент написания статьи это, похоже, не работает. Geo.Data.gov ― это продолжение портала Geospatial One-Stop (GOS), который был открыт в 2003 году в рамках инициативы "электронного правительства" США. Он доступен через Web-геопортал и популярные инструменты Geographic Information Systems (GIS). На сегодняшний день последний вариант может оказаться наилучшим для целей геопространственного поиска.

Большинство наборов геопространственных данных представлены в формате шейп-файлов ESRI, по-прежнему доминирующем формате ГИС. Некоторые находятся на серверах организаций-источников, и в этом случае возможности предварительного просмотра карты прямо на Data.gov ограничены. С развитием онлайн-картирования хотелось бы увидеть и другие форматы, такие как открытый стандарт Keyhole Markup Language(KML), поддерживаемый Открытым геопространственным консорциумом (OGC). На Data.gov лишь очень небольшой процент наборов геопространственных данных представлен в формате KML. Я решил оценить, сколько именно. Очевидным подходом казался поиск по типу файла, но инструмент расширенного поиска позволяет выбирать только PDF, текстовый формат или форматы Microsoft® Office. Выполнив полнотекстовый поиск по KML и еще KMZ (сжатый файл KML), я получил всего несколько сотен результатов.

Сверх очевидного поиска

Конечно, по степени важности за поиском наборов данных по формату следует поиск наборов данных по темам и характеристикам в соответствии с определенными потребностями анализа. Data.gov не позволяет особо надеяться на спонтанные открытия, поэтому очень важно обратить внимание на сообщества по интересам, такие как Health.Data.Gov или BusinessUSA. В них можно попасть через вкладку Communities на сайте Data.gov. Это дает шанс исследовать полезные наборы данных, неофициально классифицированные по темам.

Я также обнаружил, что многие наборы данных, представленных в формате KML, оказались в разделе не геопространственных (хотя большинство из тех наборов, что используют локальные шейп-файлы, находятся именно там), а "неструктурированных" данных, так что поиск нужно выполнять по всему сайту.

Загрузка наборов геопространственных данных

Как я уже упоминал, наборы геопространственных данных на Data.gov представлены в виде шейп-файлов ESRI в формате KML и нескольких других форматах. В этой статье я сосредоточусь на KML. Достоинством KML является гибкость, которую он придает легким аналитическим приложениям. Его можно использовать с Google Earth или другим программным обеспечением виртуального 3D-глобуса, таким как Microsoft Live Earth и NASA World Wind.

В качестве примера я выбрал набор данных "Map of Federal Lands Highway (FLH) American Recovery and Reinvestment Act (ARRA) projects" ― это многословное, что характерно для сферы государственного управления, название просто указывает на объекты проектов, финансируемых определенными учреждениями администраций штатов и федерального правительства. Ссылка на соответствующую страницу Data.gov приведена в разделе Ресурсы. В верхнем правом углу страницы расположена кнопка для загрузки внешнего KML-файла. Фактически загружается файл flh-arra-projects.kmz, который представляет собой zip-архив с обычным XML-файлом KML. Его можно загрузить как есть в Google Earth (см. раздел Ресурсы). После загрузки установите и запустите Google Earth, а затем просто перетащите файл KMZ в окно открытого приложения. Появятся координаты, как показано на рисунке 2.

Рисунок 2. Набор данных FLH/ARRA, загруженный в Google Earth
Набор данных FLH/ARRA, загруженный в Google Earth
Набор данных FLH/ARRA, загруженный в Google Earth

С каждым набором координат связаны метаданные, которые в общепринятом для KML стиле встроены в HTML-описания. Google Earth загружает каждый такой фрагмент кода HTML при нажатии на любой из маркеров местоположения, как показано на рисунке 3.

Рисунок 3. Набор данных FLH/ARRA в Google Earth со всплывающим диалоговым окном для одной из точек
Набор данных FLH/ARRA в Google Earth со всплывающим диалоговым окном для одной из точек
Набор данных FLH/ARRA в Google Earth со всплывающим диалоговым окном для одной из точек

В пакет KMZ входит файл KML и графический файл условных обозначений, которые видны в правом нижнем углу на рисунке 2. В листинге 1 приведен фрагмент KML-файла, соответствующий одному из маркеров местоположения.

Листинг 1. Фрагмент кода, соответствующий одному из маркеров местоположения
<Placemark>
  <name>1</name>
  <description><![CDATA[State Code = 1668<br>
  ARRA Funding =Agency<br>
  Client Agency = BLM<br>
  State Project number = AZ BLM 93(1)<br>
  Project Name = Monolith Gardens Trailhead Turnoff<br>
  Congressional District = 02<br>
  County Name = Mohave<br>
  State = AZ<br>
  Project description = Add a paved right turn lane to US Highway 93
   at the driveway to the Monolith Gardens Trailhead<br>
  Program = Title 16/B<br>
  Status = Awarded<br>
  Contracting Method = Full & Open<br>
  Ecconomically Distressed Area = Y<br>
  Length (Mile) = 0.470<br>
  Date = 2/23/2010<br>
  Amount = $59,341.34<br>
  Contractor = CH2M Hill, Inc., 9191 South Jamaica Street, Englew<br>
  Federal Aid Project Number = 1516049300001<br>
  Service DEscription = Construction<br>
  Latitude = 35.20605<br>
  Longitude = -114.09483<br>
  <br><br><br>]]></description>
    <styleUrl>#BLM</styleUrl>
    <Point>
        <coordinates>-114.09483,35.20605,0</coordinates>
    </Point>
</Placemark>

Я добавил знаки перевода строк для форматирования в статье, но это также помогает разглядеть простую структуру, используемую для кодирования метаданных в элементе description. Это не очень удобно ни для машинной обработки, ни для чтения человеком, но с помощью простого сценария мне удалось сделать информацию из этого кода более наглядной. Мне хотелось дополнить чрезвычайно лаконичный вид Google Earth другим инструментом, очень удобным для анализа.

Экспериментирование с данными

Я написал простую программу, приведенную в листинге 2, которая анализирует поля описания и объединяет их с координатами карты, создавая простое представление набора данных в формате JavaScript Object Notation (JSON). Код, написанный на языке Python, снабжен комментариями; его не обязательно понимать полностью.

Листинг 2. Программа, создающая простое JSON-представление набора данных
#импорт из стандартной библиотеки Python
import sys
from datetime import datetime

#импорт из библиотеки amara 
from amara.bindery import parse
from amara.thirdparty import json
from amara.lib import U

#синтаксический анализ KML-документа
kmldoc = parse(sys.stdin)

#настройка объявлений пространств имен XML
PREFIXES = { u'kml': u'http://www.opengis.net/kml/2.2' }

items = []
#перебор всех меток в документе
for pm in kmldoc.xml_select(u'//kml:Placemark'):
    coords = U(pm.Point.coordinates)
    #преобразование координат в широту и долготу
    lng, lat, alt = coords.split(u',')
    fixed_coords = u','.join((lat, lng))

    #каждая метка кодируется в описании и отделяется знаком новой строки HTML
    desc = U(pm.description)
    fields = desc.split(u'<br>')

    #объект, представляющий поля этой записи
    item = {}

    #разбор полей
    for field in fields:
        if u'=' in field:
            key, val = field.split(u'=', 1)
            item[key.strip()] = val.strip()

    #исправление некоторых полей
    item['id'] = item[u'Project Name']
    item['label'] = item[u'Project Name']
    item['latlong'] = fixed_coords
    date = item.get(u'Date')
    if date:
        d = datetime.strptime(date, '%m/%d/%Y')
        item[u'Date'] = d.isoformat()

    #добавление каждого поля к набору записей
    items.append(item)

#вывод JSON
json.dump({ u'items': items}, sys.stdout, indent=4)

Важнее результат этого сценария ― набор записей, каждая из которых напоминает листинг 3.

Листинг 3. Пример результата работы сценария, представленного в листинге 2
   {
        "Contractor": "CH2M Hill, Inc., 9191 South Jamaica Street, Englew", 
        "State": "AZ", 
        "Program": "Title 16/B", 
        "Latitude": "35.20605", 
        "Service DEscription": "Construction", 
        "id": "Monolith Gardens Trailhead Turnoff", 
        "Status": "Awarded", 
        "Project Name": "Monolith Gardens Trailhead Turnoff", 
        "label": "Monolith Gardens Trailhead Turnoff", 
        "Client Agency": "BLM", 
        "Length (Mile)": "0.470", 
        "Ecconomically Distressed Area": "Y", 
        "Date": "2010-02-23T00:00:00", 
        "County Name": "Mohave", 
        "State Code": "1668", 
        "Longitude": "-114.09483", 
        "Amount": "$59,341.34", 
        "ARRA Funding": "Agency", 
        "Congressional District": "02", 
        "Project description": "Add a paved right turn lane to US
         Highway 93 at the driveway to the Monolith Gardens Trailhead", 
        "latlong": "35.20605,-114.09483", 
        "Federal Aid Project Number": "1516049300001", 
        "State Project number": "AZ BLM 93(1)", 
        "Contracting Method": "Full & Open"
    },

С этим JSON-представлением я могу использовать свой предпочтительный аналитический инструмент, в данном случае Viewshare.org, разработанный для библиотеки Конгресса США моей компанией Zepheira.

На рисунке 4 приведен скриншот этого набора данных, визуализированного с помощью Viewshare. Программное обеспечение Viewshare поддерживает карты, графики и другие подобные представления и облегчает ответ на вопросы типа: «Сколько государственных проектов было реализовано в штате Колорадо в 2009 году?»

Рисунок 4. Набор данных FLH/ARRA, визуализированный в Viewshare
Набор данных FLH/ARRA, визуализированный в Viewshare
Набор данных FLH/ARRA, визуализированный в Viewshare

Если приглядеться, то заметно, что карты в Viewshare отличаются от карт Google Earth. Viewshare использует библиотеку OpenLayers, которая иллюстрирует гибкость современных картографических инструментов.

Заключение

Как я уже упоминал, большинство наборов данных на Data.gov ― это геопространственные данные, что подчеркивает значение местоположения для государственных программ, и это значение определяет общую полезность тех обильных данных, которые предлагает правительство США. Как я продемонстрировал в этой статье, эти данные можно использовать в аналитических инструментах или другом программном обеспечении, проделав совсем немного работы.


Ресурсы для скачивания


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management
ArticleID=930037
ArticleTitle=Наборы картографических и геопространственных данных на Data.gov
publish-date=05172013