Мне интересно писать упрощенное навигационное приложение в качестве проекта для домашних животных. После поиска бесплатных картографических данных я обосновался в US Census Bureau TIGER 2007 Данные карты линии Line/Shapefile. Данные разделяются на zip файлы для отдельных округов, и я загрузил только данные карты графства для своей области.
Каким будет лучший способ чтения в этих картографических данных в полезный формат?
Как мне:
- Прочитайте в этих файлах
- Разбирайте их - Регулярное выражение или некоторая библиотека, которая уже может анализировать эти файлы Shapefiles?
- Загрузите данные в мое приложение. Должен ли я загружать точки непосредственно в некоторую структуру данных в памяти? Использовать небольшую базу данных? Я не нуждаюсь в постоянстве, как только вы закрываете приложение данных карты. Пользователь может снова загрузить Shapefile.
Каким будет лучший способ визуализации карты после того, как я прочитал данные в Shapefile?
В идеале я хотел бы иметь возможность читать в картографическом файле данных карт графств и отображать все полилинии на экране и допускать поворот и масштабирование.
Как мне:
- Преобразовать точки lat/lon в координаты экрана? - Насколько я знаю, Shapefile использует долготу и широту для своих точек. Поэтому, очевидно, мне придется преобразовать их так или иначе, чтобы отобразить координаты для отображения функций карты.
- Отобразить данные карты (серия полилиний для дорог, границ и т.д.) таким образом, чтобы я мог легко поворачивать и масштабировать всю карту?
- Отобразить всю мою карту как серию "плиток", так что отображаются только объекты/линии в области просмотра?
Ex. данных TIGER, отображаемых как отображаемая карта:
alt text http://i43.tinypic.com/ngosjl.png
Любой, у кого есть некоторый опыт и понимание того, что мне лучше читать в этих файлах, как я должен их представлять (база данных, в структуре данных памяти) в моей программе и как я должен отображать (с вращением/масштабированием) картографические данные на экране будут оценены.
EDIT: Чтобы уточнить, я не хочу использовать API Google или Yahoo. Точно так же я не хочу использовать OpenStreetMap. Я ищу более простой подход, чем использование этих apis/programs. Это будет настольное приложение.