Как лучше всего читать, представлять и отображать данные карты? - PullRequest
12 голосов
/ 21 октября 2008

Я заинтересован в написании упрощенного навигационного приложения в качестве любимого проекта. После поиска бесплатных картографических данных я остановился на данных Бюро переписей США TIGER 2007 Line / Shapefile. Данные разбиты на zip-файлы для отдельных округов, и я загрузил одну карту-данные округов для своего района.

Как лучше всего читать эти картографические данные в пригодном для использования формате?

Как я должен:

  • Читать в этих файлах
  • Разобрать их - Регулярное выражение или какая-то библиотека, которая уже может анализировать эти шейп-файлы?
  • Загрузка данных в мое приложение. Должен ли я загружать точки непосредственно в некоторую структуру данных в памяти? Использовать небольшую базу данных? Мне не нужно постоянство, как только вы закроете приложение с данными карты. Пользователь может снова загрузить шейп-файл.

Как лучше всего отобразить карту после прочтения данных в Shapefile?

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

Как мне:

  • Преобразовать широту / долготу в экранные координаты? - Насколько я знаю, Shapefile использует долготу и широту для своих точек. Поэтому, очевидно, мне придется каким-то образом преобразовать их в экранные координаты, чтобы отобразить элементы карты.
  • Отобразить данные карты (серию полилиний для дорог, границ и т. Д.) Таким образом, чтобы я мог легко вращать и масштабировать всю карту?
  • Отображать всю мою карту как серию "плиток", чтобы отображались только элементы / линии в пределах области просмотра?

Ex. данных TIGER, отображаемых как карта отображения:
alt text

Любой, у кого есть некоторый опыт и понимание того, что мне лучше всего читать в этих файлах, как я должен представлять их (база данных, структура данных памяти) в моей программе, и как я должен отображать (с вращением / масштабированием) данные карты на экране будут оценены.

РЕДАКТИРОВАТЬ: Чтобы уточнить, я не хочу использовать API карт Google или Yahoo. Точно так же я не хочу использовать OpenStreetMap. Я ищу более подход с нуля, чем использование этих API / программ. Это будет приложение desktop .

Ответы [ 11 ]

0 голосов
/ 27 января 2009

Одним из решений является использование MapXtreme. У них есть API для Java и C #. API может загружать эти файлы и отображать их.

Для Java:

http://www.mapinfo.com/products/developer-tools/desktop%2c-mobile-%26-internet-offering/mapxtreme-java

Для .NET:

http://www.mapinfo.com/products/developer-tools/desktop%2c-mobile-%26-internet-offering/mapxtreme-2008

Я использовал это решение в настольном приложении, и оно работало хорошо. Он предлагает намного больше, чем просто отображение информации.

Теперь выполнение этого с нуля может занять довольно много времени. У них есть ознакомительная версия, которую вы можете скачать. Я думаю, что он просто печатает «MAPXTREME» на карте в виде водяного знака, но в противном случае его можно полностью использовать

...